我完全把它塞满了……是的,promise 为完成/错误(promise.then(completed).catch(error))提供了一个返回函数,但是每个 promise 又是异步的……所以它们可以按任何顺序调用并且调用函数可能会在函数返回之前完成......因此 async/await 命令......我喜欢Mostafa Gaafar的文章。基本上:
async buttonClick(){
let errMsg = '' as string;
await myService.myFunction.then(ret =>{
//ret is a string return with any error message...no messages then all
ok
errMsg = ret;
}).catch{e => {
errMsg = e.message;
}); //EO service function
//if you have an error then do something else do something else
} //EO buttonClick
和
async myService.myFunction(): Promise<string>{
let errMsg = '' as string;
let data1 = '' as string;
await Promise1.then((data) =>{
//first run
data1.value;
}).catch( e=>{
errMsg = e.message;
});
if(errMsg == ''){
//no errors so far
await Promise2.then((data) =>{
//second run
//Do something
}).catch( e=>{
errMsg = e.message;
});
} //eo if
return errMsg;
}
这将同步完成...
- 按钮点击调用
- 服务功能运行
- promise1 运行并完成
- promise2 运行并完成
- 服务功能出口
- 按钮单击退出
您也可以使用 Try/Catch 包装器来返回错误消息。已经对此进行了测试,并且在 AngularFire2 上一切正常……如果我忘记了什么,请告诉我。
- 角度/cli:1.2.6
- 节点:6.9.4
- 离子:3.7.0