【发布时间】:2018-04-22 10:58:20
【问题描述】:
我想运行一个 forEach 循环然后返回(解决?)一个 Promise 以便我的下一个函数可以运行。当 forEach 结束时我可以正确计算,但只是不知道如何解决 Promise。
这是我的代码:
addSubmissionsForms(submissionId: string, submittedFields:Array<any>): Promise<any> {
const submissionPath:firebase.database.Reference = this.rootRef.child(`submissionsByID/${submissionId}/fields`);
submittedFields.forEach(function(submittedField, i) {
let fieldId = submittedField.id;
submissionPath.child(fieldId).update(submittedField);
if(i == submittedFields.length - 1) {
console.log('finished');
}
});
}
我想返回一个 Promise 的原因是因为我想等到这个函数运行之后再运行另一个这样的函数:
this.submissionsProvider.addSubmissionsForms(submissionKey, this.submittedFields)
.then(() => {
this.navCtrl.pop();
});
【问题讨论】:
-
为什么你需要一个看起来不是异步的承诺?
-
我想等到这个函数运行完再运行另一个函数,我也愿意用回调来做到这一点
-
是的,但是这个函数不会做任何异步操作,不需要等待。您可以只调用此函数,然后调用另一个函数。
-
完美-确实不需要异步,您能否在答案中对此进行更多解释?
标签: javascript typescript foreach firebase-realtime-database