Я делаю вызов ajax, чтобы получить массив результатов. Из этого массива я делаю серию вызовов ajax и пытаюсь что-то сделать с результатами. Когда я вернусь Promise.all()
и продолжаю .then(function(moreData){})
, moreData
находится в состоянии ожидания. Я что-то упустил? Я не ожидал, что функция будет запущена до того, как будет решена любая функция doSomethingElse
.Цепочка с массивом обещаний
doSomething()
.then(function(data){
data = data.d.results;
return Promise.all(data.map(function(group){
return doSomethingElse(group.Id);
}));
})
.then(function(moreData){
//moreData is in pending state
})
.then(null, function(err){
alert(err);
});
The doSomething
и doSomethingElse
функции возвращают отложенный объект.
function doSomething(){
var dfd = $.ajax({...})
return dfd;
}
function doSomethingElse(id){
var dfd = $.ajax({...})
return dfd;
}
является 'moreData' массив? – Amit
Да, я ожидал, что это будет. Я получаю 'Promise {[[PromiseStatus]]:« ожидающий », [[PromiseValue]]: undefined}' вместо этого. – MickB
Какая версия jQuery? Я думаю, что это будет конфликт между реализацией обещаний jQuery и тем, что «обещание». –