【发布时间】:2021-07-22 12:47:15
【问题描述】:
我正在创建 javascript 函数以使用 promise 和 async await 来获取某些东西。但我得到了承诺作为回报。谁能帮我? 这是我的代码
class NetworkError extends Error {
constructor(message) {
super(message);
this.name = 'NetworkError';
}
}
const fetchingUserFromInternet = (isOffline) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (isOffline) {
reject(new NetworkError('Gagal mendapatkan data dari internet'), null);
}
resolve({ name: 'John', age: 18 });
}, 500);
})
};
const gettingUserName = async () => {
const user = await fetchingUserFromInternet(false)
.then((user) => {
return user.name
})
.catch((rejectedReason) => {
return rejectedReason
})
};
module.exports = { fetchingUserFromInternet, gettingUserName, NetworkError };
【问题讨论】:
-
gettingUserName函数应该返回user。另请注意,您将async-await语法与promise-chaning 混合使用 - 使用其中之一,但不能同时使用两者。 -
gettingUserName函数还有另一个问题:catch方法的回调函数应该抛出rejectedReason,而不是返回它。返回rejectedReason将隐式地将承诺拒绝转换为承诺履行。请参阅:stackoverflow.com/questions/62740112/… 和 stackoverflow.com/questions/62859190/…
标签: javascript node.js asynchronous promise