JavaScript 异步操作中如何获取 sendInvoiceEmail 回调结果
在上述代码中,无法直接在 'sendInvoiceEmail' 回调完后立即获取 'result' 的值,因为 'sendInvoiceEmail' 是一个异步操作,回调函数是在异步操作完成后执行的。如果想要在回调函数执行完后获取 'result' 的值,可以使用 Promise 来实现。
可以将 'sendInvoiceEmail' 函数包装成一个 Promise 对象,并在 resolve 中传递 'result' 的值。然后在调用 'sendInvoiceEmail' 的地方,使用 await 关键字来等待 Promise 对象的结果,并将结果赋值给 'result' 变量。
改进后的代码如下:
async function sendInvoiceEmailWithResult() {
let result = false;
try {
const response = await sendInvoiceEmail({ orderId: this.orderId, recipientEmail: this.state.email });
const { code, data, desc } = response;
console.log('发送邮箱', code);
if (code === 10000) {
toast('发送成功');
result = true;
} else {
toast(desc);
result = false;
}
} catch (error) {
console.error('发送邮箱失败', error);
result = false;
}
return result;
}
// 调用 sendInvoiceEmailWithResult 函数
const result = await sendInvoiceEmailWithResult();
console.log(result);
在上述代码中,我们定义了一个名为 'sendInvoiceEmailWithResult' 的 async 函数,使用 try-catch 语句来处理异步操作的异常。在 try 语句块中,使用 await 关键字等待 'sendInvoiceEmail' 的返回结果,并根据 'code' 的值来设置 'result' 的值。最后,使用 return 语句返回 'result' 的值。
在调用 'sendInvoiceEmailWithResult' 函数时,使用 await 关键字等待 Promise 对象的结果,并将结果赋值给 'result' 变量。然后可以在后续的代码中使用 'result' 的值。
原文地址: https://www.cveoy.top/t/topic/fCPk 著作权归作者所有。请勿转载和采集!