Korzystam z nodejs i sterownika node-mysql. Uważam, że robię powtarzalne płyty kotła, takie jak
client.query (querystr, queryparams, wywołanie zwrotne funkcji (err, wyniki, pola) {
if (err){ do err related stuff }
else { do success related stuff }
}
Ostatecznie przez większość czasu wszystko jestproste i powtarzane, z wyjątkiem tego, co dzieje się w przypadku sukcesu, który różni się bardzo w zależności od zapytania i kontekstu. Chciałbym więc zawrzeć to wszystko w jednej funkcji i przekazać w querystr, queryparams i funkcji sukcesu.
Problem: Nie mogę tego zrobić, ponieważ jest to wywołanie zwrotne i nie mogę sprawić, by silnik zapytań użył mojej funkcji sukcesu, nawet jeśli przekażę ją za pomocą argumentów wywołania zwrotnego.
Zastanawiam się więc, czy mogę wykonać „wymaganie” w ramach wywołania zwrotnego, a jeśli tak, to czy funkcje modułu „wymagane” zostaną dodane do zakresu globalnego czy zakresu wywołania zwrotnego? Mam nadzieję, że to drugie B.
Odpowiedzi:
2 dla odpowiedzi № 1Możesz przypisać zmienne do zakresu modułu, który jest aproksymacją „globalnej”, jak poniżej:
function a() { module.sys = require("sys"); }
function b(cb) { cb() };
b(a);
console.log(sys);