javascript – Typescript:等待所有的承诺

我的承诺遇到了一个小问题.

这是我的功能:

public generateMealPlanForAWeek(myMealProfile: any, totalCalories:number):Promise<any> {
        return new Promise(resolve => {
            let mealplan:Array<any> = [];
            for (let i = 1; i <= 7; i++) {
                this.generateMealPlanForOneDay(myMealProfile, totalCalories).then(data => {
                    mealplan.push(data); // resolves much later
                });
            }
            resolve(mealplan); // is resolved instant
        })
    }

我的问题是,“generateMealPlanForOneDay”将在之后的膳食计划本身得到解决.

Mealplan是一系列物体(在这种情况下是用餐).

当我想保存我的膳食计划时,膳食计划是空的:

this.storage.set('Mealplan', JSON.stringify(mealplan)).then(....) // meal plan is Array[0]

什么是解决我的膳食计划的所有膳食然后保存它的最佳方法?

解决方法:

在这种情况下,您可以使用Promise.all.

public generateMealPlanForAWeek(myMealProfile: any, totalCalories:number):Promise<any> {
    var mealPlans = [];
    for (let i = 1; i <= 7; i++) {
       mealPlans.push(this.generateMealPlanForOneDay(myMealProfile, totalCalories));
    }
    return Promise.all(mealPlans);
}

// later
generateMealPlanForAWeek(...).then(mealPlans => ...);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐