在Node.js中同步两个异步函数可以使用回调函数、Promise、async/await等方式实现。下面是对这些方法的详细解释:
function asyncFunc1(callback) {
setTimeout(function() {
callback(null, 'Result from asyncFunc1');
}, 1000);
}
function asyncFunc2(arg, callback) {
setTimeout(function() {
callback(null, 'Result from asyncFunc2 using ' + arg);
}, 1000);
}
asyncFunc1(function(err, result1) {
if (err) {
console.error(err);
return;
}
asyncFunc2(result1, function(err, result2) {
if (err) {
console.error(err);
return;
}
console.log(result2);
});
});
function asyncFunc1() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('Result from asyncFunc1');
}, 1000);
});
}
function asyncFunc2(arg) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('Result from asyncFunc2 using ' + arg);
}, 1000);
});
}
asyncFunc1()
.then(function(result1) {
return asyncFunc2(result1);
})
.then(function(result2) {
console.log(result2);
})
.catch(function(err) {
console.error(err);
});
function asyncFunc1() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('Result from asyncFunc1');
}, 1000);
});
}
function asyncFunc2(arg) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('Result from asyncFunc2 using ' + arg);
}, 1000);
});
}
async function main() {
try {
const result1 = await asyncFunc1();
const result2 = await asyncFunc2(result1);
console.log(result2);
} catch (err) {
console.error(err);
}
}
main();
以上是在Node.js中同步两个异步函数的几种常见方法。根据具体的业务需求和开发习惯,选择合适的方式来处理异步操作。
领取专属 10元无门槛券
手把手带您无忧上云