如何构建包含promise的同步代码

时间:2014-08-26 13:57:44

标签: angularjs promise q

我有这个功能:

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中做到这一点?

谢谢你们。

1 个答案:

答案 0 :(得分:1)

经过进一步研究,我实际上找到了两个解决这个问题的方法:

  1. 使用提供商和yieldgalaxy-lib包装这些以便像asnyc / await一样使用它们。
  2. 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;
    }
    
  3. 问题是,我仍然在ECMAscript 5中工作,因此我无法使用它(在生产环境中)。我的临时解决方案是将send转换为异步函数,返回一个promise。