【问题标题】:How can I return value from setInterval function?如何从 setInterval 函数返回值?
【发布时间】:2017-09-19 11:30:38
【问题描述】:

我想从异步函数中获取状态,但它总是返回未定义的状态,然后它转到包含返回状态的函数;

main.js

 let status = addData(firstname, lastname, age, sex);
 console.log(status);

数据.js

static async addData(firstname, lastname, age, sex) {
  try {

    let txdata = await data.dataentry(firstname, lastname, age, sex);

    let count = 0;
    let intervalId = setInterval(async() => {
      let status = await data.entryStatus(txdata);
      logger.info("status %o", status);


      if (status = true) {
        clearInterval(intervalId);
        return status;
      } else {
        count++;
        if (count > 4) {
          clearInterval(intervalId);
          throw createError();
        }
      }
    }, 500);

  } catch (err) {
    throw createError();
  }
}

【问题讨论】:

标签: javascript asynchronous settimeout setinterval


【解决方案1】:

从异步函数返回结果的标准方法是使用Promise。 它与 Attila 描述的非常相似,但您不需要库即可使用它。

它适用于所有现代浏览器和 nodejs / iojs,所以如果你不关心 Internet Explorer,它是我认为的最佳选择。 如果您需要 Internet Explorer,可以使用 shim。 Google 中的“shim promise”提供了多种选择,但我没有尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 2020-03-09
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多