Mam funkcję, która robi coś takiego:Chain wielokrotny "a następnie" w jQuery.when
function do_something() {
// some code
return $.when(foo, bar, baz).then(do_something_else);
}
function do_something_else(_foo, _bar, _baz) {
// do something else
return /* the original inputs */;
}
Tak więc, gdy ktoś używa do_something
, mogą również łańcuchu wywołań zwrotnych, takich jak:
do_something().then(function(_foo_2, _bar_2, _baz_2) {
console.log(_foo_2, _bar_2, _baz_2);
});
Problem polega na tym, że nie wiem, jak obejść oryginalny powrót z do_something_else
do opisanej anonimowej funkcji. Nie chcę otrzymywać listy, ale argumenty pozycyjne zamiast tego, więc "gdy foo" wstawi jakąś wartość do _fs_something_else _foo, a następnie ta sama wartość idzie do _foo_2.
Jak mogę to zrobić w JS?
Jaka jest różnica między .done i .then w tym przypadku? Używam [tego przykładu] (https://gist.github.com/anonymous/5823503) –
'.then' utworzy nowy odroczony i doda go do łańcucha. Następna czynność wykonywana w łańcuchu, na przykład '.done' lub' .then', będzie miała dostęp tylko do tego, co zostało zwrócone z poprzedniego '.then'. –
@KevinB: Czy tak właśnie zaimplementował jQuery? Smutne :(W pierwotnej propozycji nowa obietnica jest rozwiązana z oryginalnymi wynikami, jeśli żadna nie jest zwracana z wywołania zwrotnego '.then '. –