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'。

JavaScript异步编程:Promise then方法执行顺序解析

原文地址: https://www.cveoy.top/t/topic/fCPP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录