在我的AngularJS应用程序中,我有以下变量:
var meals = _.times(mealCount, function(index) {
return new MealPlanResource({
dayId: dayId,
userFriendlyMealNumber: index + 1,
items: [],
});
});如何使函数的下一行在_.times完全执行后才能运行?
我试图:
var mealsDeferred = $q.defer();
var meals = mealsDeferred.resolve(getUpdatedMeals());
function getUpdatedMeals() {
_.times(mealCount, function(index) {
return new MealPlanResource({
dayId: dayId,
userFriendlyMealNumber: index + 1,
items: [],
});
});
}以及:
var meals;
setTimeout(function() {
_.times(mealCount, function(index) {
return new MealPlanResource({
dayId: dayId,
userFriendlyMealNumber: index + 1,
items: [],
});
});
}, 100);两人都以“未定”的身份退饭。
发布于 2017-12-10 16:42:05
假设您的_.times()函数是来自LoDash的函数,那么您的代码应该按原样工作。
_.times()是一个同步函数。它不是异步的。它在返回值之前完成所有执行。你不需要使用它的承诺,他们不会对你有任何好处。
下面是代码的一个工作示例:
function MealPlanResource( args ) {
_.assign( this, args );
}
var mealCount = 3;
var dayId = 1;
var meals = _.times(mealCount, function(index) {
return new MealPlanResource({
dayId: dayId,
userFriendlyMealNumber: index + 1,
items: [],
});
});
console.log( meals );<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
你能把它和你的实际代码进行比较吗?也许你能看到什么是不同的?
https://stackoverflow.com/questions/47740869
复制相似问题