我有5个功能,我希望他们在其中一个完成后执行记录,我不知道如何实施承诺,如果有人可以提供帮助
function1(){
.......
}
function2(){
.......
}
function3(){
.......
}
function4(){
function3();
}
function5(){
function1();
function2();
function4();
Function5执行function1,但是function2应该等到function1完成,而function4应该等待unitl function1和function2完成。
答案 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) => { ... });