下划线完成时是否存在回调,所以它是_.each
循环,因为如果此后立即我console log
显然我在每个循环中填充的数组不可用。这来自嵌套的_.each
循环。
_.each(data.recipe, function(recipeItem) {
var recipeMap = that.get('recipeMap');
recipeMap[recipeItem.id] = { id: recipeItem.id, quantity: recipeItem.quantity };
});
console.log(that.get('recipeMap')); //not ready yet.
最佳答案
UnderscoreJS中的each
函数是同步的,完成后不需要回调。一种是在循环之后立即执行命令。
如果您要在循环中执行异步操作,建议您在每个函数中使用支持异步操作的库。一种可能性是使用AsyncJS。
这是您的循环翻译为AsyncJS:
async.each(data.recipe, function(recipeItem, callback) {
var recipeMap = that.get('recipeMap');
recipeMap[recipeItem.id] = { id: recipeItem.id, quantity: recipeItem.quantity };
callback(); // show that no errors happened
}, function(err) {
if(err) {
console.log("There was an error" + err);
} else {
console.log("Loop is done");
}
});