可能题目说的不是很清楚。说一下,应用场景吧。
web端发送过来一个请求 –>
服务器执行多个异步操作,如读取并修改文件 –>
服务器向web端返回执行结果
主要的难点在于,通常使用的回调函数,只是针对 A 、B 两个函数本身。即 A 执行完毕,将执行结果传入 B 。本假设,A 函数要执行若干个异步函数;每个函数、操作都有回调函数可供执行;将所有函数、操作执行后的回调结果,统一由 A 的回调函数进行操作。以及判断何时该执行最终的 A 函数里的回调函数。
let function A(params, callback){
let callbackResults = [];
const asyncFuns = [func1,func2,...,funcN];
for(var fun in asyncFuns){
fun.call(params, function(){
// 对参数进行操作,或者直接放入 A 的回调中统一处理
callbackResults.length === asyncFuns.length?callback.call(callbackResults):callbackResults.push(argument);
})
}
}
实现的整体思路是: