Promise常用的API


1、實例方法

  (1).then  得到異步任務的正確結果

  (2).catch  獲取異常信息

  (3).finally  成功與失敗都會執行

    <script>
        function foo() {
            return new Promise(function(resolve, reject) {
                // resolve('成功');
                reject('失敗')
            })
        }
    // ----------------------------------------- 方法一
        foo()
            .then(function(data) {
                console.log('then');
            })
            .catch(function(data) {
                console.log('catch');
            })
            .finally(function(data) {
                console.log('finally');
            })
    // ----------------------------------------- 方法二
    foo()
            .then(function(data) {
                console.log('then');
            }, function(data) {
                console.log(data);
            })
            .finally(function(data) {
                console.log('finally');
            })

    </script>

 2、對象方法

  (1)Promise.all()  並發處理多個異步任務,所有任務都能執行完成才能得到結果

    function queryData(url) {
            return new Promise(function(resolve, reject) {
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    if (xhr.readyState != 4) {
                        return;
                    }
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        resolve(xhr.responseText);
                    } else {
                        reject('服務器錯誤');
                    }
                };
                xhr.open('get', url);
                xhr.send();
            });
        }
        var p1 = queryData('http://localhost:3000/a1');
        var p2 = queryData('http://localhost:3000/a2');
        var p3 = queryData('http://localhost:3000/a3');
        Promise.all([p1, p2, p3]).then((data) => console.log(data));

  

  (2)Promise.race()  並發處理多個異步任務,只要有一個任務完成就能得到結果

    function queryData(url) {
            return new Promise(function(resolve, reject) {
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function() {
                    if (xhr.readyState != 4) {
                        return;
                    }
                    if (xhr.readyState == 4 && xhr.status == 200) {
                        resolve(xhr.responseText);
                    } else {
                        reject('服務器錯誤');
                    }
                };
                xhr.open('get', url);
                xhr.send();
            });
        }
        var p1 = queryData('http://localhost:3000/a1');
        var p2 = queryData('http://localhost:3000/a2');
        var p3 = queryData('http://localhost:3000/a3');
        Promise.race([p1, p2, p3]).then((data) => console.log(data));

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM