promise

2022-02-16  本文已影响0人  懒懒猫

1.promise.all()

                allSynchronizationSite.forEach(item => {
                  if (item.status === '1' && item.fromId === 'admin') {
                    msgArr.push(
                      getSynchronizationSiteMessage(params).then(res => {
                       console.log(res)
                      })
                    )
                  }
                })
                Promise.all(msgArr).then(data => {
                  console.log('msgArr执行完后执行',)
                })

2.then()

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>promiset</title>
</head>

<body>
    <script>
        // 需求: ajax1执行完再执行ajax2,ajax2执行完再执行task
        var flag1 = true
        var flag2 = true

        function ajax1() {
            console.log(111111)
            return new Promise((resolve, reject) => {
                console.log(22222)
                setTimeout(function() {
                    console.log('ajax1');
                    if (flag1) {
                        resolve('ajax1的结果')
                    } else {
                        reject("ajax1错误!")
                    }
                }, 1000)
            })
        }

        function ajax2(data) {
            return new Promise((resolve, reject) => {
                setTimeout(function() {
                    console.log('ajax2');
                    if (flag2) {
                        resolve('ajax2的结果', data)
                    } else {
                        reject("ajax2错误!")
                    }
                }, 2000)
            })
        }

        function task(data) {
            console.log('task');
            console.log(data)
        }

        function error(err) {
            console.log(err)
        }
        console.log(444444)

        // ajax1()
        //     .then(ajax2)
        //     .then(task)
        //     .catch(error)

        ajax1()
            .then(function(data) {
                return ajax2(data) //Promise的参数机制要求必须是return
            })
            .then(function(data) {
                task(data)
            })
            .catch(error)


        // ajax1()
        //     .then(function(data) {
        //         return ajax2(data)
        //     })
        //     .then(function() {
        //         task()
        //     })
        //     .catch(function() {
        //         console.log('err');
        //     })

        console.log(333333)

        //执行顺序4-1-2-3-ajax1-ajax2-task
    </script>
</body>
</html>


上一篇下一篇

猜你喜欢

热点阅读