#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));
Комментариев нет:
Отправить комментарий