我有3個函數func1(),func2()和func3()。他們彼此獨立。我想並行執行這三種方法,並使用單個回調方法。是否有可能是這樣的jQuery/Javascript函數執行
function parentMethod(){
call ([func1(),func2(), func3()],<callback function>);
}
回調功能是可選的,但可以將這些3個功能並行地執行。
我有3個函數func1(),func2()和func3()。他們彼此獨立。我想並行執行這三種方法,並使用單個回調方法。是否有可能是這樣的jQuery/Javascript函數執行
function parentMethod(){
call ([func1(),func2(), func3()],<callback function>);
}
回調功能是可選的,但可以將這些3個功能並行地執行。
使用一個承諾鏈Promise.all
Promise.all([func1, func2, func3]).then(values => {
//values from all the functions are in the callback param
});
添加到給定的,你需要「promisify」你的職責,如果他們不已經返回承諾的承諾回答(這個演示假設的錯誤,第一回調):
let promises = [func1, func2, func3].map(func => {
return new Promise((resolve, reject) => {
func((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
})
});
});
Promise.all(promises)
.then((results) => {
let [func1Data, func2Data, func3Data] = results;
})
.catch(err => {
console.log('error!', err);
});
你也可以使用網絡工作者,但它會是一個更詳細的解決方案。你可以查看這篇文章:HTML5/JS - Start several webworkers
爲什麼不直接在'parentMethod()'裏面運行函數呢?他們是異步功能嗎? – BenM