首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在Lodash中同步返回

函数在Lodash中同步返回
EN

Stack Overflow用户
提问于 2017-12-10 16:27:15
回答 1查看 316关注 0票数 0

在我的AngularJS应用程序中,我有以下变量:

代码语言:javascript
复制
var meals = _.times(mealCount, function(index) {
    return new MealPlanResource({
      dayId:                  dayId,
      userFriendlyMealNumber: index + 1,
      items:                  [],
    });
  });

如何使函数的下一行在_.times完全执行后才能运行?

我试图:

代码语言:javascript
复制
var mealsDeferred = $q.defer();
var meals = mealsDeferred.resolve(getUpdatedMeals());

function getUpdatedMeals() {
    _.times(mealCount, function(index) {
      return new MealPlanResource({
        dayId:                  dayId,
        userFriendlyMealNumber: index + 1,
        items:                  [],
      });
    });
  }

以及:

代码语言:javascript
复制
var meals;
setTimeout(function() {
  _.times(mealCount, function(index) {
      return new MealPlanResource({
        dayId:                  dayId,
        userFriendlyMealNumber: index + 1,
        items:                  [],
      });
    });
}, 100);

两人都以“未定”的身份退饭。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-10 16:42:05

假设您的_.times()函数是来自LoDash的函数,那么您的代码应该按原样工作。

_.times()是一个同步函数。它不是异步的。它在返回值之前完成所有执行。你不需要使用它的承诺,他们不会对你有任何好处。

下面是代码的一个工作示例:

代码语言:javascript
复制
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 );
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>

你能把它和你的实际代码进行比较吗?也许你能看到什么是不同的?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47740869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档