【发布时间】:2014-12-16 07:46:21
【问题描述】:
我有用逗号分隔的名称列表。我想要的是我想为序列中的所有名称调用服务器请求并将结果存储在数组中。我试过了,当我确实有字符串中有多个名称时它正在工作。
见Here - 当我知道名字的数量时,这是有效的
现在我想要的是我想让这段代码通用。如果我在该字符串中添加一个名称,它应该会自动处理,而无需为 ajax 请求添加任何代码。
见Here - 这是我尝试过的。它没有按预期工作。
shoppingList = shoppingList.split(",");
var result = [];
function fetchData(shoppingItem)
{
var s1 = $.ajax('/items/'+shoppingItem);
s1.then(function(res) {
result.push(new Item(res.label,res.price));
console.log("works fine");
});
if(shoppingList.length == 0)
{
completeCallback(result);
}
else
{
fetchData(shoppingList.splice(0,1)[0]);
}
}
fetchData(shoppingList.splice(0,1)[0]);
问题
我不知道如何检测所有承诺对象已被解析,以便我可以调用回调函数。
【问题讨论】:
-
注意你的第一个解决方案中的deferred antipattern,它应该只是jsfiddle.net/obkp6Lg0/5
标签: javascript ajax recursion