对下面代码进行优化
const promise = async () => {
return new Promise((resolve, reject) => {
fetch('xxx')
.then(res => {
resolve(res);
})
.catch(err => {
reject(err)
})
});
}
try {
const res = await promise();
console.log(res);
} catch (err) {
console.log(err);
}
promise()
.then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
});
上面两种获取promise结果的方式都不够优雅,可以封装一个函数来返回promise的结果,可以这样优化:
const [res, err] = await getPromiseResult(promise());
实现getPromiseResult有两种方式。
方式一:
const getPromiseResult = async (promise) => {
return promise
.then(res => [res, undefined])
.catch(err => [undefined, err]);
}
方式二:
const getPromiseResult = async (promise) => {
try {
const res = await promise;
return [res, undefined];
} catch (err) {
return [undefined, err];
}
}