我有一個關於ES6模塊的問題,以及如何正確調用它們之間的函數作爲回調。調用另一個模塊函數作爲回調[ES6]
採取「page_API.js」,在數據被收到的回調函數是在我的「xml_functions.js」在那裏我處理這個requestExecuteAsync多叫
// 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');
};
現在,我想打電話給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";
,然後裏面的dataRecieved功能只需要調用
[callback](res)
但由於「dataRecieved」進口越來越給出的定義requestExecuteAsync不同的字符串(EG將被稱爲「_Data_Recieved_」而不是「dataRecieved」,我不知道該怎麼辦。
任何幫助將不勝感激!
謝謝
爲什麼不只是傳遞函數本身而不是字符串?爲什麼不使用Promises而不是回調? –
「*以前我使用的代碼庫由許多JS文件組成,所有功能都位於全局名稱空間*」 - ouch。我很高興ES6模塊迫使你更好的方法:-) – Bergi
@Bergi阿哈你告訴我!如果有機會在一個新的項目中開始重新編寫一些舊的XML解析+網絡代碼到模塊中,那就更好了! –