Почему значение промиса передается аргументом, но не возвращается даже через .then?
Почему значение промиса передается аргументом в функцию, но не возвращается?
Пример:
async function loadData(url) {
let f = await fetch(url);
if (!f.ok) {
alert('получить файл не удалось');
} else {
let json = await f.json();
f(json); // можно передать значение промиса аргументом в функцию, четко
return json; // возвращает промис, а не значение
}
}
Пробовал вернуть так:
promis.then((value)=> {
return value; // не возвращает
});
Или так (как в схожих вопросах здесь):
let json = await f.json();
let p = json.then((value)=> {
return value; // не возвращает
});
return p; // не возвращает значение
Подробный код:
class Ajax {
result(url) {
let p = this.load(url);
p.then((value)=> {
return value; // не возвращает
});
}
async load(url) {
try {
let f = await fetch(url);
if(!f.ok) {
throw new SyntaxError("Файл отсутствует"); // (*)
}
let json = await f.json();
if(Object.keys(json.result).length ==0) {
throw new SyntaxError("Данные отсутствуют : выборка пустого запроса"); // (*)
}
return json;
} catch(er) {
alert(`Ошибка : ${er}`); // TypeError: failed to fetch
}
}
}
let ajax = new Ajax;
alert(ajax.result('file.php')); // undefended
result(url) {
let p = this.load(url);
p.then((value)=> {
f(value) // передаем аругмент
});
//alert(v);
}
function f(value) {
return value; // undefended
}