如何在javascript中从嵌套异步函数传播返回值

时间:2016-03-11 09:24:15

标签: javascript asynchronous nested

我有一部分代码,比如

function outerFunction() {
  // adapter.getUpdate is asynchronous
  adapter.getUpdate(objectId,
    function (err, update) {
      if (err)
        return err; // I want to propagate this error message forward
      // do some work
    }
  );
}

我希望在调用outerFunction()的任何地方都可以使用错误消息。 此外,adapter.getUpdate()方法是异步的。

1 个答案:

答案 0 :(得分:1)

使用回调并在发生错误时执行它:

/**
 * @param {Function} onerrorcb
 */
function outerFunction(onerrorcb) {
  // adapter.getUpdate is asynchronous
  adapter.getUpdate(objectId,
    function (err, update) {
      if (err) {
          onerrorcb(err) // execute
          return;
      }
      // do some work
    }
  );
}

然后你可以像这样使用它:

outerFunction(function(err) {
    // handle error here
})