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我想根据他所做的尝试,他不希望看到一个可编辑的对象。无论如何,谢谢你:)