如何在 Node.js 中执行一组同步和异步函数?
我们有一个函数数组,有些函数是同步的,有些是异步的。我们将学习如何按顺序执行所有这些。
输入:
listOfFunctions = [
() => {
console.log("Synchronous Function);
},
async () => new Promise(resolve => {
setTimeout(() => {
resolve(true);
console.log("Asynchronous Function);
}, 100);
}),
.
.
.
]
方法一:将所有函数视为异步函数并执行它们。因为在 Javascript 中,即使你把同步函数当作异步函数,也没有问题。
例子:
index.js
// this is our list of functions
let listOfFunctions = [
() => {
console.log("Synchronous Function Called");
},
async () => new Promise(resolve => {
setTimeout(() => {
console.log("Asynchronous Function Called");
resolve(true);
}, 100);
})
]
// this function will be responsible
// for executing all functions of list
let executeListOfFunctions = async(listOfFunctions) => {
for(let func of listOfFunctions){
await func();
}
}
// calling main function
executeListOfFunctions(listOfFunctions);
index.js
// this is our list of functions
let listOfFunctions = [
() => {
console.log("Synchronous Function Called");
},
async () => new Promise(resolve => {
setTimeout(() => {
console.log("Asynchronous Function Called");
resolve(true);
}, 100);
})
]
// this function will be responsible
// for executing all functions of list
let executeListOfFunctions = async(listOfFunctions) => {
return Promise.all(listOfFunctions.map(func => func()));
}
// calling main function
executeListOfFunctions(listOfFunctions);
输出:
方法2:想法是一样的,但是在这种方法中实现很容易。
例子:
index.js
// this is our list of functions
let listOfFunctions = [
() => {
console.log("Synchronous Function Called");
},
async () => new Promise(resolve => {
setTimeout(() => {
console.log("Asynchronous Function Called");
resolve(true);
}, 100);
})
]
// this function will be responsible
// for executing all functions of list
let executeListOfFunctions = async(listOfFunctions) => {
return Promise.all(listOfFunctions.map(func => func()));
}
// calling main function
executeListOfFunctions(listOfFunctions);
输出: