javascript - 轮询时 promise 异步等待

标签 javascript ecmascript-6 promise async-await

我正在尝试将使用 promise(和轮询)的函数转换为异步函数,但我不太确定它是如何工作的。

我有这个:

function myFunction() {
    return new Promise(resolve => {
        // stuff here ...

        var poll = setInterval(function() {
            if (condition) {
                clearInterval(poll);
                resolve("done");
            }
        }, 100);
    });
}

.. 但我不确定要在这里等待什么:

async function myFunction() {
    // stuff here ...

    var poll = setInterval(function() {
        if (condition) {
            clearInterval(poll);
            // await what?
        }
    }, 100);
}

最佳答案

setInterval 不适合异步等待。最好使用您在循环的每次迭代中再次调用的 setTimeout 的“promisified”版本。

const myFunction = async = () => {
  let condition = false;

  while (!condition) {
    await new Promise(resolve => setTimeout(resolve, 100));
    condition = processCondition();
  }
}

关于javascript - 轮询时 promise 异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213034/

相关文章:

javascript - 当我尝试使用 npm 安装 Brain.js 时出现此错误

javascript - 如何在 Ecmascript 6 中加载 css 文件

typescript 通用 promise 返回类型

javascript - 嵌套的 Promise.map() 不返回任何结果

javascript - 运行序列 promise 之间的区别是创建一个新的 promise 然后运行和创建所有 promise 然后运行每个 promise

javascript - 标签中包含的可点击 img 在 IE8 中不起作用

javascript - 为什么初始化的 JavaScript 对象不包含原型(prototype)对象?

javascript - CSS3 Flex 布局右侧留空

javascript - 在 redux-saga 中等待

javascript - Eslint:去除关键字功能