Реализация приложения Async / Await в Node / Express - PullRequest
0 голосов
/ 02 октября 2018

Я столкнулся с проблемой синхронизации / асинхронности в моей программе и с трудом внедряю асинхронность в промежуточное ПО.Я пытался несколько раз и разбил его кучу, что будет довольно простой способ реализовать асинхронное ожидание?

Вот маршрут

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.

...