Javascript 即使已成功映射,数组也为空
我遇到了关于u.map(使用下划线.js)的问题 我需要在另一个函数中使用calArray的最新迭代。然而,它总是被认为是未定义的。因此,我在上面插入了一个console.log,得到的结果如下:Javascript 即使已成功映射,数组也为空,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我遇到了关于u.map(使用下划线.js)的问题 我需要在另一个函数中使用calArray的最新迭代。然而,它总是被认为是未定义的。因此,我在上面插入了一个console.log,得到的结果如下: 这是一个范围问题吗?另外,如果它是在推之前记录的,那么我可以理解为什么它会出现未定义。如何绕过它?我相信下划线的映射会生成一个新数组,在您的情况下,新数组将包含一系列承诺(ajax请求) 您可能希望首先将其分配给变量,如下所示: getCalories: function () { var
这是一个范围问题吗?另外,如果它是在推之前记录的,那么我可以理解为什么它会出现未定义。如何绕过它?我相信下划线的
映射会生成一个新数组,在您的情况下,新数组将包含一系列承诺(ajax请求)
您可能希望首先将其分配给变量,如下所示:
getCalories: function () {
var encode = "1%20";
var calSource = "https://api.edamam.com/api/nutrition-data?app_id=#&app_key=#";
var requests = _.map(ingArray, function(elem) {
return $.ajax(calSource, {
dataType: "json",
jsonp: "jsonp",
data: "ingr=" + encode + elem
});
});
$.when.apply($, requests).then(function(results) {
console.log(results); // can you take a screenshot of this output
var calories = _.map(results, function(result) {
return JSON.parse(result.responseText).calories;
});
calArray = calArray.concat(calories);
});
}
代码的预期结果是什么?它是否意味着将所有结果推送到一个数组中?是的,将每个Ajax请求的结果(每次循环一个diff数据参数)推送到一个新数组中。谢谢!我尝试了它,收到了这个错误:似乎结果数组是从$传递的。当(…)。然后(…)
不是响应对象,你能分享你从控制台得到的结果吗。log(results)
更新了上面的代码啊,我认为$。当期望承诺作为参数,而请求
是数组时,我已经更新了代码
getCalories: function () {
var encode = "1%20";
var calSource = "https://api.edamam.com/api/nutrition-data?app_id=#&app_key=#";
var requests = _.map(ingArray, function(elem) {
return $.ajax(calSource, {
dataType: "json",
jsonp: "jsonp",
data: "ingr=" + encode + elem
});
});
$.when.apply($, requests).then(function(results) {
console.log(results); // can you take a screenshot of this output
var calories = _.map(results, function(result) {
return JSON.parse(result.responseText).calories;
});
calArray = calArray.concat(calories);
});
}