我有这个功能:
var send = function send (report) {
someAsnycFn().then(
function () {
synchronousSend(report);
return true;
}, function () {
throw new Error("The user is not authenticated! Not sending report");
});
};
我的目标是让send
函数阻止代码执行,直到解析了promise,然后执行相应的代码块并继续执行代码。
我想例如在C#中你会使用await ...
我怎样才能在JS中做到这一点?
谢谢你们。
答案 0 :(得分:1)
经过进一步研究,我实际上找到了两个解决这个问题的方法:
yield
:galaxy-lib包装这些以便像asnyc / await一样使用它们。 ECMAscript 7 defines async/await
-Syntax。有了这个,我就能做到:
asnyc function send (report) {
await someAsyncFn().catch(throw new Error("The user is not authenticated! Not sending report"));
synchronousSend(report);
return true;
}
问题是,我仍然在ECMAscript 5中工作,因此我无法使用它(在生产环境中)。我的临时解决方案是将send
转换为异步函数,返回一个promise。