【发布时间】:2016-11-04 15:50:45
【问题描述】:
我有一个三阶段的 mashup 脚本,它检查本地音像店的最新租借内容,然后从烂番茄 (RT) 获得他们的评论百分比和共识:
$(document).ready(function(){
$('button').click(function (){
getNewRentals(url).then(function(ids){
var mapped = ids.map(function(id, f){
return function(){
return getRentalSpecs(id, f).then(function (f, name, year){
return getRotten(f, name, year); // Gets only f!
});
}
});
var m = mapped[0]();
for(var i = 1; i < mapped.length; i++) {
m = m.then(mapped[i]);
}
});
});
});
一切都很好,除了只有f被传递给最后一个函数getRotten,但没有 电影名字也没有年份。映射循环一定有问题,因为所有三个函数都使用相同的 jquery getJSON(通过 Yahoo YQL),它们同样包装在标准 js 承诺中,同样解析为代码中提到的参数。那么如果数据是从第一个函数传递到第二个,为什么不从第二个传递到第三个呢?
我已经在这个回调/承诺地狱中烤了几个星期了,现在我已经很生气了。这也是我在 SO 的第一篇文章,所以请多多包涵。
【问题讨论】:
标签: javascript jquery dictionary nested es6-promise