У меня есть вложенное обещание, когда функция вызывает другую функцию и обе возвращает обещания. Функция b
вызывается функцией a
, и когда выполняется обещание функции a
, функция b
решает свою собственную отсрочку и передает результат от a
и собственный результат.Обещание, которое возвращает обещание
function a(){
var d = $.Deferred();
makeSomeAsyncCall(function(){
d.resolve('a')
})
return d.promise();
}
function b(){
var d = $.Deferred();
a= a()
a.done(function(a){d.resolve(a, 'b')})
.fail(function(a){d.reject(a, 'b')})
return d.promise();
}
b().done(function(a, b){console.log(a, b)})
.fail(function(a, b){console.log(a, b)})
Интересно, есть ли способ Райта это без создания отложила в функции b
Какова цель 'b'? почему не может 'b' просто вернуть' a' напрямую? Я думаю, вы слишком упростили свой пример, до такой степени, что его можно упростить, чем вы, вероятно, захотите. 'a(). done (function (a) {console.log (arguments)}). fail (function (a) {console.log (arguments)})' –
Дело в том, что 'b' должен добавить свой собственный параметр к разрешенному отложенному. Таким образом, чтобы начальный вызов мог записывать '' a ''и' "b" '. Я не могу найти способ сделать это без второго отложенного в функции 'b' –
Тогда ответ не будет, в той или иной форме вам придется создать новый отложенный объект, если вы хотите добавить к нему параметры. Возможно, это возможно, но, возможно, но я не думаю, что в этом случае было бы намного чище (и все равно потребуется создать новый объект с отсрочкой.) –