Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么异步/等待不';t在forEach循环内同步ioredis get方法执行?_Node.js_Async Await_Ioredis - Fatal编程技术网

Node.js 为什么异步/等待不';t在forEach循环内同步ioredis get方法执行?

Node.js 为什么异步/等待不';t在forEach循环内同步ioredis get方法执行?,node.js,async-await,ioredis,Node.js,Async Await,Ioredis,异步/等待方法: 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 ope

异步/等待方法:

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,但它似乎没有按预期工作。然后我使用了callback,使用的get方法仍然相同。我使用ioredis库


我做错了什么?

Async/await approuch应该是这样的:

(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() => {
  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