为什么 async/await 不同步 ioredis get 方法在 forEach 循环中的执行?
Why async/await doesn't synchronizes ioredis get method execution inside a forEach loop?
Async/Await方法:
Ids = ['abc','lmn','xyz']
Ids.forEach(function (resId){
console.log('inside loop');
async function operation(){
var curObj = await redisClient.get('key1');
console.log('done waiting');
}
}
另一个函数的回调方法:
function operation(cb) {
redisClient.get('key1', cb);
}
operation(function(){
console.log('inside operation');
});
我想等到 curObj 变量设置并按顺序执行代码以打印 'done waiting'。我使用了 async/await 但它似乎没有按预期工作。然后我使用回调与相同的 get 方法仍然相同。我使用 ioredis 库。
我做错了什么?
Async/await 方法应如下所示:
(async() => {
const Ids = ['abc','lmn','xyz'];
const operation = async (){
var curObj = await redisClient.get('key1');
console.log('done waiting');
}
for (const resId of Ids){
console.log('inside loop');
await operation();
}
})()
forEach
循环中没有async
,但可以与for...of
一起使用。
请注意,我正在使用 IIFE 函数,例如如何在没有其他上下文的情况下使用 async/await。
Async/Await方法:
Ids = ['abc','lmn','xyz']
Ids.forEach(function (resId){
console.log('inside loop');
async function operation(){
var curObj = await redisClient.get('key1');
console.log('done waiting');
}
}
另一个函数的回调方法:
function operation(cb) {
redisClient.get('key1', cb);
}
operation(function(){
console.log('inside operation');
});
我想等到 curObj 变量设置并按顺序执行代码以打印 'done waiting'。我使用了 async/await 但它似乎没有按预期工作。然后我使用回调与相同的 get 方法仍然相同。我使用 ioredis 库。
我做错了什么?
Async/await 方法应如下所示:
(async() => {
const Ids = ['abc','lmn','xyz'];
const operation = async (){
var curObj = await redisClient.get('key1');
console.log('done waiting');
}
for (const resId of Ids){
console.log('inside loop');
await operation();
}
})()
forEach
循环中没有async
,但可以与for...of
一起使用。
请注意,我正在使用 IIFE 函数,例如如何在没有其他上下文的情况下使用 async/await。