Powiedzmy mam coś w następujący sposób:Podczas korzystania z wywołań zwrotnych w pętli javascript, czy istnieje sposób na zapisanie zmiennej, która została zaktualizowana w pętli do wykorzystania w wywołaniu zwrotnym?
for(var i = 0; i < length; i++){
var variable = variables[i];
otherVariable.doSomething(variable, function(err){ //callback for when doSomething ends
do something else with variable;
}
Do czasu wywołania zwrotne są nazywane, variable
nieuchronnie być ostatnia zmienna dla wszystkich wywołań zwrotnych, zamiast być inna dla każdego wywołania zwrotnego, jak bym lubić. Zdaję sobie sprawę, że mógłbym przekazać variable
do doSomething()
, a następnie odebrać go jako część wywołania zwrotnego, ale doSomething()
jest częścią zewnętrznej biblioteki, a ja wolałbym nie ingerować w kod źródłowy.
Czy tych z Was, którzy znają JavaScript lepiej niż ja wiem, czy istnieją jakieś alternatywne sposoby, aby robić to, co ja lubię robić?
najlepsze, a dzięki,
Sami
Niestety, to nie pomoże w moim przypadku, ponieważ doSomething() jest funkcją z biblioteki, której nie chcę edytować. Gdy ta biblioteka zostanie zaktualizowana, będę musiał ponownie edytować kod źródłowy i jest to coś, z czym po prostu nie chcę się zajmować. Zakładając, że nie mogę zmienić funkcji doSomething(), czy jest coś co mogę zrobić? – thisissami
Nie wymaga to żadnych zmian w 'doSomething()'. Zakładam, że 'doSomething' po prostu odebrał wywołanie zwrotne i że włączenie parametru' variable' było czymś, co być może chciałbyś zmienić. Jeśli podpis 'doSomething' to' doSomething (val, callback) 'to po prostu zmodyfikuj mój przykład do' otherVariable.doSomething (variable, callbackFor (variable)) '. Ważne jest to, że tworzony jest nowy zakres, poprzez wywołanie funkcji, aby utrzymać wartość zmiennej dla funkcji wywołania zwrotnego. – aparker42
Hmm, więc myślę, że jestem nieco zdezorientowany. Sposób działania 'doSomething()' polega na tym, że przekazał on zmienną, a ostatecznie 'doSomething()' wywoła określoną funkcję zwrotną, gdzie pierwszym parametrem jest dowolny kod błędu, który wynikał z 'doSomething()'. Jeśli wstawię wrapper funkcji (zmiennej) wokół wywołania zwrotnego, aby utworzyć nowy zakres, czy to nie funkcja 'function (variable)' stanie się callback zamiast, a parametr 'variable' faktycznie będzie komunikatem o błędzie? – thisissami