объявив функцию ждать обещания - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть следующая функция:

function JSON_to_buffer(json) {
    let buff =  Buffer.from(json);
    if ( json.length < constants.min_draft_size_for_compression) {
        return buff;
    }
        return zlib.deflate(buff, (err, buffer) => {
            if (!err) {
                return buffer;
            } else {
                return BPromise.reject(new VError({
                    name: 'BufferError',
                }, err));
            }
        });
}

Я хочу иметь возможность запустить это, но подождать, если он перейдет к вызову распаковки.В настоящее время я вызываю это в цепочке обещаний, и она возвращается в цепочку, не дожидаясь этого, и возвращается после завершения предыдущей цепочки обещаний.

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете поместить эту логику в Promise вместе с функцией async

function JSON_to_buffer(json) {
    return new Promise(function (resolve, reject) {
        let buff = Buffer.from(json);
        if (json.length < constants.min_draft_size_for_compression) {
            return resolve(buff);
        }

        zlib.deflate(buff, (err, buffer) => {
            if (!err) {
                resolve(buffer);
            } else {
                reject(err);
                /*return BPromise.reject(new VError({
                    name: 'BufferError',
                }, ));*/
            }
        });

    });

}

async function main() {
    try {
        let buffer = await JSON_to_buffer(myJSON);
    } catch (e) {
        console.log(e.message);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...