JavaScript异步编程:Promise then方法执行顺序解析
JavaScript异步编程:Promise then方法执行顺序解析
在分析代码执行顺序前,我们先来看一下这段代码的功能:
sendInvoiceEmail({ orderId: this.orderId, recipientEmail: this.state.email }).then(
(response) => {
console.log('2');
const { code, data, desc } = response;
console.log('发送邮箱', code);
if (code === 10000) {
toast('发送成功');
result = true;
} else {
toast(desc);
result = false;
}
},
);
console.log('1');
这段代码调用sendInvoiceEmail函数发送邮件,并使用Promise处理异步操作。
执行顺序:
代码执行后,会先输出'1',再输出'2'。这是因为sendInvoiceEmail函数内部可能包含异步操作,例如网络请求。
Promise.then方法:
then方法用于指定Promise对象状态改变后的回调函数。
- 当Promise对象状态变为'fulfilled'(操作成功)时,调用第一个回调函数。
- 当Promise对象状态变为'rejected'(操作失败)时,调用第二个回调函数(可选)。
异步编程:
JavaScript是单线程语言,但可以通过异步编程实现非阻塞操作。
- 当遇到异步操作(例如网络请求)时,JavaScript引擎会将该操作交给浏览器内核处理。
- 浏览器内核处理完成后,会将结果放入任务队列中。
- JavaScript引擎会不断轮询任务队列,一旦发现有任务,就会将其取出并执行。
总结:
在这段代码中,sendInvoiceEmail函数的执行不会阻塞后续代码的执行。当sendInvoiceEmail函数内部的异步操作完成后,才会执行then方法中的回调函数,输出'2'。
原文地址: https://www.cveoy.top/t/topic/fCPP 著作权归作者所有。请勿转载和采集!