У меня есть вопрос относительно модулей ES6 и как правильно вызывать функции между ними в качестве обратного вызова.Вызов другой функции модуля как обратного вызова [ES6]
Принять «page_API.js», по данным того получил функцию обратного вызова вызывается
// Make a call to our server, Once we've recieved data we'll call our callback
import {requestExecuteAsync} from "../xml_functions";
export const getData =() => {
requestExecuteAsync('api/getData', "dataRecieved");
};
export const dataRecieved =() => {
alert('Recieved Data');
};
Теперь в моих «xml_functions.js», где я с этим справиться requestExecuteAsync и больше, я хотел бы назвать dataRecieved как только сервер ответит.
Ранее кодовый я работаю с состояли из многих JS файлов, со всеми функциями, живущих в глобальном пространстве имен, поэтому функция работала как этот
// once data has been retrieved from server
if (callbackparamsArr.length) {
window[callback](res, callbackparamsArr);
} else {
window[callback](res);
}
Однако теперь функция обратного вызова не определена в окне как это больше не имеет объема данных.
Я попытался в том числе функции dataRecieved внутри xml_functions
import { dataRecieved } from "../MyPage/MyPage_API.js";
, а затем просто позвонить
[callback](res)
, но из-за импорта «dataRecieved» получение дали другую строку, как это определено в requestExecuteAsync (EG он будет называться «_Data_Recieved_» вместо «dataRecieved», я не уверен, что делать.
Любая помощь будет очень признательна!
Thanks
Почему бы просто не передать функцию непосредственно вместо строки? И почему бы не использовать обещания вместо обратных вызовов? –
"* Раньше кодовая база, с которой я работала, состояла из многих JS-файлов со всеми функциями, живущими в глобальном пространстве имен *" - ouch. Я рад, что модули ES6 заставляют вас лучше подойти :-) – Bergi
@ Bergi Aha, ты говоришь мне! Если бы в новом проекте появилась возможность перезаписать часть нашего унаследованного XML-синтаксического анализа + сетевого кода в модули, гораздо приятнее! –