首页 > 解决方案 > 为什么 await 在异步系列中不起作用?我该如何实施?

问题描述

请检查下面的示例代码,等待在异步每个系列中都不起作用,为什么?如何解决这个问题?

async.eachSeries(myaccomplishmentinfo, (imgitem, next) => {
            let imgfilename = req.body.userid + '_' + uniqid.time() + '_' + imgitem.order;
            let img1_buff = Buffer.from(imgitem.filecontent, 'base64');
            let data = {};
            data.binaryData = img1_buff;
            data.folderName = 'myaccomplishments';
            data.fileName = imgfilename;
            data.filetype = imgitem.filetype;
            await s3Lib.storeData(data, (res) => {
                myaccomplishmentimgdetail.push({
                    uniqueid: random,
                    filename: imgfilename,
                    filetype: imgitem.filetype,
                    imagetag: imgitem.imagetag,
                    imgorder: imgitem.order,
                    created_at: getdbdate,
                    modified_at: getdbdate
                });
                console.log(res)
                next();
            }) 

标签: node.jsangularjs

解决方案


这里的问题是您需要添加asynceachSeries函数中。

另外,不要使用next您已经在等待它结束的参数,如下所示:

async.eachSeries(myaccomplishmentinfo, async (imgitem) => {
            let imgfilename = req.body.userid + '_' + uniqid.time() + '_' + imgitem.order;
            let img1_buff = Buffer.from(imgitem.filecontent, 'base64');
            let data = {};
            data.binaryData = img1_buff;
            data.folderName = 'myaccomplishments';
            data.fileName = imgfilename;
            data.filetype = imgitem.filetype;
            await s3Lib.storeData(data, (res) => {
                myaccomplishmentimgdetail.push({
                    uniqueid: random,
                    filename: imgfilename,
                    filetype: imgitem.filetype,
                    imagetag: imgitem.imagetag,
                    imgorder: imgitem.order,
                    created_at: getdbdate,
                    modified_at: getdbdate
                });
                console.log(res)
            }) 

推荐阅读