Страницы

Поиск по вопросам

среда, 22 января 2020 г.

ES6 синтаксис. Как правильно записать?

#javascript #ecmascript_6 #async_await




const handleFiles = () => {
  return async handle => {
    let result;
    result = 'hello';
    return result;
  };
};
handleFiles().then(result => console.log(result)).catch(console.log(e));




Почему не срабатывает данный скрипт?


  Uncaught TypeError: handleFiles(...).then is not a function

    


Ответы

Ответ 1



Проблема в том, что handleFiles возвращает функцию, а не Promise, у которого есть метод then. Для решению нужно либо вызвать возвращенную функцию, либо возвращать результат вызова: const handleFiles = () => { return async handle => { let result; result = 'hello'; return result; }; }; handleFiles()().then(result => console.log(result)).catch(e => console.log(e)); const handleFiles2 = () => { return (async handle => { let result; result = 'hello'; return result; })(); }; handleFiles2().then(result => console.log(result)).catch(e => console.log(e));

Ответ 2



Вот как будет выглядеть ваша промисифицированная функция const handleFiles = (str) => { return new Promise((resolve, reject) => { if(str){ let result = str; resolve(result); } else { reject('Укажите аргумент'); } }); }; В resolve передаете аргумент для then, а в reject аргумент для catch Реализация: handleFiles('1').then(result => console.log(result)).catch(e => console.log(e));

Ответ 3



let handleFiles = new Promise((resolve, reject) => { let result; result = 'hello'; resolve(result); if (false) { reject('error'); } }); handleFiles.then(result => console.log(result), error => console.log(eror));

Комментариев нет:

Отправить комментарий