我有一个关于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解析+网络代码到模块中,那就更好了! –