好的,所以我几乎得到了承诺。
我正在试图弄清楚如何在view_functions中放置一个promise,以便返回工作。
function loadViewFunctions(view_functions,append_data){
var this_app_data = [];
function viewFunctions(){
for (i = 0; i < view_functions.length; i++) {
this_app_data[i] = window[view_functions[i]]();
}
for (i = 0; i < this_app_data.length; i++) {
this_app_data[i].then(function(this_d) {
append_data = append_data + this_d;
});
}
return append_data;
}
//return
return viewFunctions().then(post_app_data => {
return post_app_data;
});
};
答案 0 :(得分:0)
以下代码段应该与我认为您尝试实现的内容相同:
function loadViewFunctions (view_functions, initial_append_data) {
// retrieve the functions and calls them
const promises = view_functions.map(f => window[f]());
return Promise.all(promises).then(
// join the results together
results => results.reduce((acc, this_d) => acc + this_d), initial_append_data)
);
}
使用
map
迭代数组并创建一个新数组Promise.all
要等到你给它的所有承诺都已解决正如其他人在评论中提到的那样,不要使用函数名来访问全局函数。传递一系列函数。