setTimeoutから戻り値を取得する [重複] 質問する

setTimeoutから戻り値を取得する [重複] 質問する

戻り値を取得したいだけですsetTimeoutが、取得するのは関数のテキスト形式全体ですか?

function x () {
    setTimeout(y = function () {
        return 'done';
    }, 1000);
    return y;
}

console.log(x());

ベストアンサー1

これにはPromiseを使用する必要があります。ES6で利用可能ポリフィル可能非常に簡単に:

function x() {
   return new Promise((resolve, reject) => {
     setTimeout(() => {
       resolve('done!');
     });
   });
}

x().then((done) => {
  console.log(done); // --> 'done!'
});

asyncES2017 では、関数内で/ を使用awaitするとより便利になりますasync

async function() {
  const result = await x();
  console.log(result); // --> 'done!';
}

おすすめ記事