如果值不是承诺,如何等待值返回

时间:2017-10-17 13:55:13

标签: javascript asynchronous promise

例如,有一个我不自己开发的异步函数,但我知道随机时间(几秒钟内)该函数将返回一个值。 如果它没有返回承诺,那是否可以等待返回?

1 个答案:

答案 0 :(得分:3)

不是这样。

您可以编写一个包装函数,该函数返回一个轮询,直到获得结果为止。

然后,承诺会调用您没有重复写入的函数(例如,使用setInterval),直到它返回一个值,然后将其传递给解析。

function wrap_function () {
    return new Promise(function (resolve, reject) {
         var interval = setInterval(function () {
             var result = the_origional_function();
             if (result) {
                 clearInterval(interval);
                 resolve(result);
             }
         }, 2000);
    });
}

(假设我在“几秒钟内”解释该语句)该函数将“正确地”返回一个值