множественная асинхронная / ожидающая функция JS - PullRequest
1 голос
/ 10 июня 2019

В моем контроллере функция fn выполняет return.suucess () до того, как мои переменные будут правильно определены.В этом случае объект ytb.Файл sails.log "items" правильный, но "ytb" не вернулся.

Я также пытался использовать Promise.then и .all.Кроме того, с помощью async.each () и удаления await внутри этой функции.

    fn: async function (inputs, exits) {

        var url = require('url');
        var items = await Collection.find({});

        _.each(items, async item => {
            if (item.youtube_url) {
                var ytbUrl = item.youtube_url;
                var regexBaseUrlYtb = new RegExp('(https://www.youtube.com/channel/)');

                if (regexBaseUrlYtb.test(ytbUrl)) {
                    var ytbIdChannel = ytbUrl.replace(regexBaseUrlYtb, '');
                    var ytbChannel = await sails.helpers.youtubeApi(ytbIdChannel);
                    item.ytb = {};
                    Object.assign(item.ytb, ytbChannel);
                } 
            }
            sails.log('items: ', item)
        });
        return  exits.success({
            items
        });
    }

Я ожидаю, что объект ytb также будет передан с элементом object в представлении, но объект items передан безобъект ytb.

Кроме того, в общем, я ожидаю, что return exits.success () запускается только после завершения функции

Спасибо.

...