我有以下代码:
const checkBatchStatus = async (batchId: number) => {
let result = await fetchcall("POST", "api/batch/status", { "BatchId": batchId })
.then(result => {
Promise.resolve(true);
})
.catch(err => {
Promise.resolve(false);
});
};
呼叫者代码如下:
async function isBatchRequestCompleted(batchId: number) {
let status = await checkBatchStatus(batchId);
console.log(`status is ${status}`);
状态始终未定义。不明白为什么。
如果我将checkBatchStatus更改为简单地返回false,那么我得到的状态等于false。
const checkBatchStatus = async (batchId: number) => {
return false;
};
一个善良的灵魂可以向我解释我所看到的吗?
答案 0 :(得分:2)
您没有在函数checkBatchStatus()
中返回值。如果仅需要布尔值,则在Promise.resolve()
的回调函数中调用.then()
是错误的主意。
const checkBatchStatus = (batchId: number) => {
return fetchcall("POST", "api/batch/status", { "BatchId": batchId })
.then(result => {
return true;
})
.catch(err => {
return false;
});
};
答案 1 :(得分:2)
您在这里不必要地混合了promise和async / await。我建议坚持一个或另一个。
async
/ await
:
const checkBatchStatus = async (batchId: number) => {
try {
await fetchcall("POST", "api/batch/status", { "BatchId": batchId });
return true;
} catch {
return false;
}
};
或承诺:
const checkBatchStatus = (batchId: number) => {
return fetchcall("POST", "api/batch/status", { "BatchId": batchId })
.then(result => true)
.catch(err => false);
};