【问题标题】:promise.all() instead of nesting functions in express applicationpromise.all() 代替 express 应用程序中的嵌套函数
【发布时间】:2021-03-25 21:56:37
【问题描述】:

基本上,我有 2 个函数将 blob 从 src 复制到目标文件夹,因此我尝试在我的 node.js 应用程序中使用 promise.all。但我收到 ReferenceError: promise is not defined 错误。任何人都可以查看以下代码并告诉我在哪里做错了吗?我应该在 return new promise(resolve,reject){} 中包含 try/catch 吗?

export.addrestartjob=async function(req,res){
some var....
//return new promise(resolve,reject){
try {
const msg = await xxx();
const msg1 = await aaa();
let resp = await promise.all([msg, msg1]);
return res.status(200).json({
status: 'success',data:resp
});
} catch (error) {
console.log(error);
}

// }
}
const xxx = async function () {
return new Promise(resolve => {
setTimeout(() => { resolve('yes'); }, 300);
});
}
const aaa = async function () {
return new Promise(resolve => {
setTimeout(() => { resolve('yesssssssssssssss'); }, 100);
});

}

【问题讨论】:

    标签: node.js express async-await


    【解决方案1】:

    使用promise.all()

     exports.addRestartJob =function (req, res) {
        // some variables...
         return new Promise((resolve, reject) => {
        var containerName = name;
        
         let tasks = [];
         tasks.push(blobService.startCopyBlob(storageuri, containerName, blobName));
    
         tasks.push(blobService.startCopyBlob(storageuri1, containerName, blobName1));
    
         tasks.push(blobService.startCopyBlob(storageuri2, containerName, blobName2));
    
        promise.all(tasks)
        .catch((err) => {
         console.log(err);
        })
        });
        }
    

    【讨论】:

    • blobService.startCopyBlob(),有 3 个不同的任务,我正在尝试编写单独的 fn 表达式并在 addrestartjob() 中调用它们,这可能吗?如果是,我该怎么做?我必须使用 asynch/await/吗?
    • 如果答案有用,请使其有用。
    • blobService.startCopyBlob(storageuri, containerName, blobName),blobService.startCopyBlob(storageuri1, containerName, blobName1)); blobService.startCopyBlob(storageuri2, containerName, blobName2));这些是 3 种不同的服务,所以我想在单独的函数中编写它们并返回承诺事件,然后我想在 export.addrestartjob() 中使用它们。
    【解决方案2】:
        > Using `async/await function`
        
            exports.addRestartJob =function async (req, res) {
            // some variables...
            
            var containerName = name;
        
    try{
             let result1 = await blobService.startCopyBlob(storageuri, containerName, 
                                 blobName)
             if (!!result1)
              // if success copy someother blob
        
             let result2 = await blobService.startCopyBlob(storageuri1, containerName, 
                                 blobName1)
             if (!!result2)
              // if success copy someother blob
        
             let result3 = await blobService.startCopyBlob(storageuri2, containerName, 
                                 blobName2)
             if (!!result3)
              // if success copy someother blob
        
       return() // return something from function
    }catch(err){
      // if any one function get error
      console.log(err);
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-24
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      相关资源
      最近更新 更多