在Node / Express应用中实现异步/等待

时间:2018-10-02 02:39:38

标签: node.js express async.js

我的程序遇到了同步/异步问题,很难在我的中间件中实现异步。我已经尝试了几次并将其弄乱了,实现异步等待的一种相当简单的方法是什么?

这是路线

router.post("/testmedia", uploadFiles, testMedia);

这是中间件

const uploadFiles = (req,res,next)=> {
    let b2fileIDs = [];
    let savedPhotoLinks = {};

    upload(req,res,function(err){
        req.files.forEach(function(image){
            var b2accountId;
            var b2authToken;
            var b2uploadURL;

            //console.log(image);
            b2.authorize()
                .then(function(auth){
                b2accountId = auth.accountId;
                b2authToken = auth.authorizationToken;
                                    }).then(function(ret){
                b2.getUploadUrl(process.env.B2BUCKET_ID)
                }).then(function(cb){
                                    b2uploadURL = cb.uploadUrl;
                b2authToken = cb.authorizationToken;
                }).then(function(cb){
                b2.uploadFile({
                    uploadUrl: b2uploadURL,
                    uploadAuthToken: b2authToken,
                    filename: 'test',
                    data: image.buffer
                }).then(function(cb){
                    var uploadLink = {link: cb.fileId};
                    b2fileIDs.push(uploadLink);
                }).then(function(){
                    successFn(response){
                    console.log(b2fileIDs);
                    //Save ID's to DB here

                    }
                }).catch((error) => {
                    console.log("This is an ERROR " + error );

                });
            })
                console.log("1");

            console.log('2');
        })
        console.log('3');
        console.log(b2fileIDs);
    })
    console.log('4');
    next();

};

问题在于,当我上传多个文件时,异步特性会继续运行而不会捕获b2fileIDs行。

0 个答案:

没有答案