[英]function return synchronously in Lodash
在我的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);
兩者都以“未定義”形式返回餐點。
假設你_.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>
您可以將其與您的實際代碼進行比較,也許會看到有什么不同?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.