我有以下设置:
const foo = () => {
bar((err,payload) => {
// some stuff happens here
}
}
所以我需要不断地在“foo”中调用“bar”,直到“某些事情发生在这里”部分发生某种结果。但我显然必须在重新调用“bar”之前等待回调的结果 - 我怎么能构建这个呢?
答案 0 :(得分:2)
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);
}
});
});
}