1. ホーム
  2. javascript

[解決済み] setTimeoutから戻り値を取得する [重複]。

2022-11-26 18:05:08

質問

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

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

console.log(x());

どのように解決するのですか?

プロミスを使用する必要があります。プロミスは ES6で利用可能な で利用可能ですが、ポリフィルが可能で は非常に簡単に :

function x() {
   var promise = new Promise(function(resolve, reject) {
     window.setTimeout(function() {
       resolve('done!');
     });
   });
   return promise;
}

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

とは async / await ES2017では async 関数の中であれば、きれいになります。

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