Javascript 为什么等待未定义的返回?
我有以下代码:Javascript 为什么等待未定义的返回?,javascript,es6-promise,Javascript,Es6 Promise,我有以下代码: const checkBatchStatus = async (batchId: number) => { let result = await fetchcall("POST", "api/batch/status", { "BatchId": batchId }) .then(result => { Promise.resolve(true); }) .catch(err => { Promi
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,那么我得到的status等于false
const checkBatchStatus = async (batchId: number) => {
return false;
};
善良的灵魂能向我解释我看到了什么吗?您没有在函数
checkBatchStatus()
中返回值。在.then()的回调函数中调用Promise.resolve()
,如果只需要一个布尔值,那么调用Promise.resolve()是错误的
const checkBatchStatus=(batchId:number)=>{
返回fetchcall(“POST”、“api/batch/status”、{“BatchId”:BatchId})
。然后(结果=>{
返回true;
})
.catch(错误=>{
返回false;
});
};
您在这里不必要地混合了承诺和异步/等待。我建议你还是坚持这样或那样
异步
/等待
:
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);
};
您没有从checkBatchStatus
函数返回任何内容您的代码不包含单个return
语句。需要三个,这还是不行。.then()
处理程序或.catch()
处理程序不返回任何内容。而且,根本没有理由使用wait
或async
。好的,现在就知道了。仅供参考,在.then()
处理程序中使用返回承诺.resolve(true)
在技术上没有问题。当返回true时,这是不必要的
会很好地工作。@jfriend00我想根据他所做的尝试,他不希望看到一个可编辑的对象。无论如何,谢谢你:)