jQuery延迟未按预期工作

jQuery延迟未按预期工作,jquery,deferred,Jquery,Deferred,我使用jQuery和Deferred,有一个(对我来说)意外的行为。我希望你能给我解释一下 我计划做的是:我想迭代一个键列表。对于每个键,我创建一个延迟并调用一个函数(doSomething),在这里我传递键和一个回调方法(在这里我解析延迟)。通话结束后,我将延迟通话添加到列表中。doSomething函数执行异步操作,并在最后调用给定过多的回调方法。迭代之后,我等待延迟并显示一些警报 下面的代码片段是我第一次尝试,但它不能正常工作。我预期会有三个带有“0”、“1”和“first,second”

我使用jQuery和Deferred,有一个(对我来说)意外的行为。我希望你能给我解释一下

我计划做的是:我想迭代一个键列表。对于每个键,我创建一个延迟并调用一个函数(doSomething),在这里我传递键和一个回调方法(在这里我解析延迟)。通话结束后,我将延迟通话添加到列表中。doSomething函数执行异步操作,并在最后调用给定过多的回调方法。迭代之后,我等待延迟并显示一些警报

下面的代码片段是我第一次尝试,但它不能正常工作。我预期会有三个带有“0”、“1”和“first,second”的警报。但我只得到“1”

var doSomething=函数(键,回调){
setTimeout(函数(){
回调(键);
}, 0)
}
var items=新数组();
var进程=新数组();
变量键=['第一','第二'];
for(键中的变量idx){
var deferred=$.deferred();
剂量测量(键[idx],功能(项目){
项目。推送(项目);
延迟。解决();
});
进程.push(deferred.promise());
}
进程[0]。完成(函数(){
警报('0');
})
进程[1]。完成(函数(){
警报(“1”);
})
$.when.apply($,processs).done(function(){
警报(项目);
});
的可能重复(和许多其他)。的可能重复(和许多其他)。