async.parallel 中的 async await,回调变得未定义

比利·苏托莫

我正在尝试在 async.parallel 中执行 async/await,但无法调用回调。但是,如果我删除 async/await,则可以调用回调。下面是代码

let parallelFunc = listCamId.map(camId => {
    return async function (callback) {
      let insertRuleTransParam = {
        rule_id: ruleId,
        camera_id: camId,
        vas_id: vasId,
        additional_parameter: additionalParameter
      }

      let configParamCamera = { where: { id: camId } };
      let configParamRule = { where: { id: ruleId } };

      try {
        let ruleTrans = await createRuleTransaction(insertRuleTransParam);
        let rule = await ruleService.find(configParamRule, "one");
        let cam = await cameraService.find(configParamCamera, "one");
        let uri = await constructCamUri(cam.protocol, cam.user_access, cam.password, cam.ip_address, cam.port, cam.path);
        let visionParam = await startVasRule(vasId, ruleTrans.id, camId, rule.rule_path, rule.rule_exec, uri);
        let updateRuleParam = {
          port_stream: visionParam.port,
          url_stream: visionParam.url,
          mmap_in: visionParam.mmap_in,
          mmap_out: visionParam.mmap_out
        }
        await updateRuleTransaction(updateRuleParam);
        callback(null);
      } catch (e) {
        callback(e);
      }
    }
  })

  return new Promise((resolve, reject) => {
    async.parallel(parallelFunc, function (err, results) {
      if (err) {
        reject(err);
      } else {
        resolve('success');
      }
    })
  });

有人可以指出代码有什么问题吗?

贝尔吉

不要将async.js库用于 Promise 代码,也不要使用回调参数。只是Promise.all用来等待多个事情:

let promises = listCamId.map(async function(camId) {
  let insertRuleTransParam = {
    rule_id: ruleId,
    camera_id: camId,
    vas_id: vasId,
    additional_parameter: additionalParameter
  }

  let configParamCamera = { where: { id: camId } };
  let configParamRule = { where: { id: ruleId } };

  let ruleTrans = await createRuleTransaction(insertRuleTransParam);
  let rule = await ruleService.find(configParamRule, "one");
  let cam = await cameraService.find(configParamCamera, "one");
  let uri = await constructCamUri(cam.protocol, cam.user_access, cam.password, cam.ip_address, cam.port, cam.path);
  let visionParam = await startVasRule(vasId, ruleTrans.id, camId, rule.rule_path, rule.rule_exec, uri);
  let updateRuleParam = {
    port_stream: visionParam.port,
    url_stream: visionParam.url,
    mmap_in: visionParam.mmap_in,
    mmap_out: visionParam.mmap_out
  }
  await updateRuleTransaction(updateRuleParam);
  return null;
});
return Promise.all(promises);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在async.waterfall方法中未定义的回调

来自分类Dev

解决Async / Await中未定义的最短路径

来自分类Dev

ctx.body 在 async/await 函数中未定义

来自分类Dev

问题与async.parallel

来自分类Dev

async.series内部的async.parallel

来自分类Dev

PowerShell的async.parallel吗?

来自分类Dev

回调已经被调用。但在那之前我从来没有打电话给回调。async.parallel 中的错误?

来自分类Dev

AWS Cognito 返回未定义的错误 async/await

来自分类Dev

可以在async.parallel中使用async.waterfall吗?

来自分类Dev

回调已在async.map中调用

来自分类Dev

Node.js中的async / await替换

来自分类Dev

.net中的Node.js与Async / await

来自分类Dev

ShowDialog中的Catel async await命令-死锁

来自分类Dev

Typescript中async / await的详细信息

来自分类Dev

Angular:承诺中的Async Await- EventListener

来自分类Dev

Node.js中的async / await替换

来自分类Dev

Typescript中async / await的详细信息

来自分类Dev

React 中的 Axios Async-Await

来自分类Dev

在node.js中为async.series定义回调的位置

来自分类Dev

NodeJS批处理async.parallel

来自分类Dev

了解Node.JS async.parallel

来自分类Dev

如何使async.parallel()的for循环工作

来自分类Dev

使用Async.Parallel进行计划

来自分类Dev

使用async.parallel时出错

来自分类Dev

Error while using async.parallel

来自分类Dev

用于大量功能的async.parallel

来自分类Dev

parallel.async,传递参数线程安全

来自分类Dev

使用async.parallel时出错

来自分类Dev

将参数传递给node.js中的async.parallel