这个方法有效又快速,还是有其他方法?
const getStores = async () => {
return new Promise((resolve) => {
resolve({ pending: true, response: null, error: null });
})
.then(async () => {
return new Promise(async (resolve) => {
setTimeout(async () => {
try {
const response = await $axios.get(`/Store`);
resolve({ pending: false, response: response.data, error: null, refresh: getStores });
} catch (error) {
resolve({ pending: false, response: null, error: error.message, refresh: getStores });
}
}, 1000);
});
})
}
我想返回待处理的数据和错误以及刷新数据的方法。
不要这样做。您不应该 永远不要将
async function
作为执行器传递给 new Promise
,并且 不要将 await
与 .then(…)
语法混合使用。此外, pending
属性和您创建的第一个承诺完全没有意义,它们永远不会返回给调用者。你可以将整个事情简化为
async function getStores() {
await new Promise((resolve) => {
setTimeout(resolve, 1000);
});
try {
const response = await $axios.get(`/Store`);
return { pending: false, response: response.data, error: null, refresh: getStores };
} catch (error) {
return { pending: false, response: null, error: error.message, refresh: getStores };
}
}
但是您可能不需要任何超时,并且错误处理(使用try
/
catch
或
.catch(…)
,或让它传播)最好留给调用者,而不是强迫他们在
null
属性的非
error
ishness。