435 宏任务,微任务


/* 
    运行循环 : 
    任务
    宏任务 : script 、timeout
    微任务 : promise 


        先执行宏任务, 再执行微任务
            宏任务      微任务
    第一圈:   script     promise(then)
    第二圈: setTimeout
 */

console.log('log1') // 宏任务 1 

setTimeout(() => {
    console.log('timeout') // 下一次事件循环宏任务 【先放到消息队列中。】
}, 0)

new Promise((resolve, reject) => {
    console.log('promise1') // 宏任务 2
    resolve()
}).then(res => {
    console.log('then1') // 微任务 5 【去排队】
})

new Promise((resolve, reject) => {
    console.log('promise2') // 宏任务 3
    resolve()
}).then(res => {
    console.log('then2') // 微任务 6
})

console.log('log2') // 宏任务4


/* log1
    promise1
    promise2
    log2
    then1
    then2
    timeout 
*/



<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>Document</title>
</head>

<body>
    <!-- 
      promise 封装一个ajax 
     -->
    <script>
        // 我们的封装promise
        function fetch(options) {
            const p = new Promise((resolve, reject) => {
                $.ajax({
                    // 接口地址
                    url: options.url,
                    // 参数
                    data: options.data || {},
                    // 请求方式
                    type: options.type || 'GET',
                    // 数据类型
                    dataType: 'json',
                    // 成功回调
                    success: resolve,
                    // 失败回调
                    error: reject
                })
            })

            // 返回
            return p
        }

        // 使用
        fetch({
            url: '...........'
        }).then(res => {
            // .....
        })

        // const p = new Promise( (resolve,reject)=> {

        //     $.ajax({
        //       url : '',
        //       dataType :'json',
        //       data : {}
        //     })

        // } )
    </script>
</body>

</html>

posted on 2020-04-04 17:08  冲啊!  阅读(132)  评论(0编辑  收藏  举报

导航