ES6 ждут обратного вызова - PullRequest
0 голосов
/ 25 июня 2018

Я собираюсь написать свое первое приложение для node.js. Я использую модуль узла для загрузки шрифта Google (https://www.npmjs.com/package/google-font-installer).

Пример кода основан на

.on («успех», ...

.on ('error', ...

и я не понимаю, как написать это с помощью await.

Это пример кода с сайта пакета:

var GoogleFontlist = require('google-font-installer');

var fontList = new GoogleFontlist('VALID_API_KEY');

fontList.on('success', function(){
    this.searchFontByName('Source Sans Pro', function(err, filteredList) {
        if (err)
            throw err;
        filteredList.getFirst().download(['300', '400'], function(err, result){
            if (err)
                throw err;
            result.forEach(function(el, index){
                console.log('Variant %s of %s downloaded in %s', el.variant, el.family, el.path);
            })
        });
    })
})

fontList.on('error', function(err){
    throw err;
})

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

1 Ответ

0 голосов
/ 25 июня 2018

API на основе обратного вызова должен быть обещан, что-то вроде:

const fontListPromise = new Promise((resolve, reject) => {
    const fontList = new GoogleFontlist('VALID_API_KEY');
    fontList.on('success', () => resolve(fontList));
    fontList.on('error', reject);
});

Затем его можно использовать с API обещаний или с async..await:

const fontList = await fontListPromise;
fontList.searchFontByName(...);

searchFontByName canбыть обещанным в случае необходимости тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...