如何同时获取多个异步请求的最终结果
在文件夹 file 里新建两个文件:name.txt
,age.txt
,分别写点文本
我们可以使用回调函数实现效果:
// 多个异步请求 如何同时获取最终结果
let fs = require("fs");
let person = {
};
let index = 0;
const cb = () => {
if (++index === 2) {
console.log("person--->", person);
}
};
fs.readFile("./file/name.txt", "utf-8", function (err, data) {
console.log("name.txt--->", err, data);
person.name = data;
cb();
});
fs.readFile("./file/age.txt", "utf-8", function (err, data) {
console.log("age.txt--->", err, data);
person.age = data;
cb();
});
Run Code
之后我们就能同时得到两个异步请求的数据:
我们还可以写得更加通用一点
// 多个异步请求 如何同时获取最终结果
let fs = require("fs");
let person = {
};
function after(times, callback) {
// 闭包函数:函数的定义的作用域跟函数执行的作用域不在同一个作用域下
return function () {
if (--times === 0) {
callback();
}
};
}
const cb = after(2, function () {
console.log("after--person--->", person);
});
fs.readFile("./file/name.txt", "utf-8", function (err, data) {
console.log("name.txt--->", err, data);
person.name = data;
cb();
});
fs.readFile("./file/age.txt", "utf-8", function (err, data) {
console.log("age.txt--->", err, data);
person.age = data;
cb();
});