簡體   English   中英

函數在Lodash中同步返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM