我正在尝试使用链式承诺来运行异步进程。
我从这开始:
var dataStore = {};
DBCalls.GetAllProjects()
.then((data) => ProcessData.StoreProjects(data,dataStore))
.then(ProcessData.DoStuff(dataStore))
上面在StoreProjects函数之前完成了DoStuff函数。 (以错误的顺序运行)
var dataStore = {};
DBCalls.GetAllProjects()
.then((data) => ProcessData.StoreProjects(data,dataStore))
.then(() => {ProcessData.DoStuff(dataStore)})
以正确的顺序运行该功能。
有人能解释一下语法上的差异吗?
是因为StoreProjects Resolve没有返回任何内容并且回调签名不同吗?
额外信息: 使用的所有函数都返回promise。
答案 0 :(得分:0)
如果你的函数返回promises,你应该在promise处理程序中使用return语句,如果你想在转移到链中的下一个处理程序之前等待promise的解析。
var dataStore = {};
return DBCalls.GetAllProjects()
.then((data) => { return ProcessData.StoreProjects(data, dataStore); })
.then(() => { return ProcessData.DoStuff(dataStore); })