js 执行顺序

1、js是‘单线程’语言,执行模式有两种:同步,异步

  单线程:只有一条流水线

  同步:依次再流水线上执行

  异步:流水线旁加了一个临时储物台(任务队列),会把某些模块拿到临时储物台,或者会把临时储物台的某些模块插队到流水线

 

2、js默认模式是同步模式,按流水线执行:A,B,C,不管A里边代码运行时间多长,都要先执行完A,再执行B,再执行C

A:sssssssssssssssssssssssssss
B: ddd
C: ccccccccc

 

3、实现异步模式的几种方法

  ①回调函数(把临时储物台的模块插入到流水线)

  ②setTimeout(把流水线的模块拿到临时储物台,过一段时间再插入回去)

  ③Promise对象(把临时储物台的模块插入到流水线)

 

4、小程序中所有的wx.xxx()接口,也都是异步模式(先执行流水线上非wx.xxx的模块,把流水线上所有的wx.xxx模块先拿到临时储物台执行,等哪个有了返回结果,并且流水线上有空了,也就是流水线上非wx.xxx的模块执行完了,再把哪个插回去)

 

5、async函数中,代码的执行模式是,异步模式,所有的模块都放在临时储物台上执行,哪个模块执行完了,就先把哪个模块拿到流水线上执行

 

6、举例

jobs.add({
      data: {
        userName: 'aaa'
      }
    })
      .then(res => {
        wx.hideLoading({
          success: res=>{
            console.log('hideLoading')
          }
        })
        wx.showToast({
          title: '提交成功',
          icon: 'success',
          duration: 2000
        })
        wx.switchTab({
          url: '../my/my',
        })
        console.log('aaaa')
      })
      .catch(err => {
        console.log(err)
      })

执行顺序:

把wx.hideLoading,wx.showToast,wx.switchTap先放到临时储物台,并执行

执行流水线上的console.log('aaaa'),流水线上有空了,把临时储物台上最先有了返回结果的wx.hideLoading插入回流水线执行,流水线上有空了,又把第二个有了返回结果的wx.switchTab插入回流水线执行

显示顺序:aaaa,hideLoading,跳转

 

其他:

7、if...else if....else会按照顺序执行,先执行if,再执行else if,再执行else

8、for循环是先执行完内部的循环,再跳出循环,for循环后面的代码,必须for循环完成后才能执行

 

wx.hideLoading({
success: res=>{
console.log('hidLoading')
}
})
posted @ 2019-11-03 12:16  254980080  阅读(8276)  评论(0编辑  收藏  举报