如何在Typescript / Angular 2中做出承诺?

时间:2017-02-01 12:24:09

标签: angular typescript promise es6-promise

我有5个功能,我希望他们在其中一个完成后执行记录,我不知道如何实施承诺,如果有人可以提供帮助

function1(){
    .......
    }
function2(){
    .......
    }
function3(){
    .......
    }
function4(){

    function3();
    }
function5(){

function1();
function2();
function4();

Function5执行function1,但是function2应该等到function1完成,而function4应该等待unitl function1和function2完成。

1 个答案:

答案 0 :(得分:1)

我附上了一个使用promises并链接它们的例子。如果你问的是你真正想要的东西,我不是百分之百,所以我试图展示不同的链接方式。 f5等待f1和f2并行完成,而f3在等待f1完成之前等待f1完成。

http://www.webpackbin.com/N1_9QCcDG

查看app.component.ts文件。

值得一提的是,每次调用函数都会返回一个新的承诺,这就是f3在f5之后完成的原因。如果你保留对每个初始化的promise的引用,那么f3和f5将同时完成,因为f1和f2将并行运行,即使f3不检查f2是否在f1完成之前完成 - 并且因为f2会在f1之前完成一秒,到f3检查f2何时完成 - 它已经完成了:)

基本上在Angular2中,您可以像这样创建ES6的承诺:

new Promise(function (resolve, reject) { ... });

在可以简化的打字稿中:

new Promise((resolve, reject) => { ... });