根据其回调重复调用函数

时间:2017-12-24 06:11:17

标签: javascript ecmascript-6

我有以下设置:

const foo = () => {
  bar((err,payload) => {
     // some stuff happens here
  }
}

所以我需要不断地在“foo”中调用“bar”,直到“某些事情发生在这里”部分发生某种结果。但我显然必须在重新调用“bar”之前等待回调的结果 - 我怎么能构建这个呢?

1 个答案:

答案 0 :(得分:2)

尝试在ES6中使用新的awaitasync

const foo = async () => {
    var myOutcome;
    while (/*CHECK HERE*/) {
        try {
            myOutcome = await /* call async javascript function here */
        } catch (e) {
            // Handle error here
        }
    }
}

这一切都依赖于Javascript Promises,只要该函数返回一个promise,它就会自动以同步方式运行。

编辑如果该功能仅支持回调,您可以将其包装在这样的承诺中。

function myCallbackFunctionPromise() {
    return new Promise((resolve, reject) => {
        callbackFunction((err, data) => {
            if (err) {
                reject(err);
            } else {
                resolve(data);
            }
        });
    });
}