zoukankan      html  css  js  c++  java
  • ES6之Promise对象

    创建Promise对象

    function getHtml(url) {
        return new Promise((resolve, reject) => {
            let xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onload = () => {
                resolve(xhr.responseText);
            };
            xhr.onerror = () => {
                reject(xhr.statusText)
            };
            xhr.send();
            }
        );
    }
    function getTitle(html){
        return html.substring(html.indexOf('<title>')+7,html.indexOf('</title>'));
    }

    执行单个Promise

    getHtml('http://www.baidu.com')
    .then( data
    => { console.log('[请求成功]' , getTitle(data)); }, status => { console.log('[请求失败]', status); } ).catch(e => { console.log('[异常]', e); });

    Safari运行效果 ( 停用跨域限制 )

    执行多个Promise

    Promise.all([
        getHtml('http://www.baidu.com'),
        getHtml('http://www.sogou.com'),
        Promise.resolve('Yahoo')
    ])
    .then(
        datas => {
            console.log('[请求成功]', getTitle(datas[0]));
            console.log('[请求成功]', getTitle(datas[1]));
            console.log('[请求成功]', datas[2]);
        },
        status => {
            console.log('[请求失败]', status);
        }
    ).catch(e => {
        console.log('[异常]', e);
    });

     Safari运行效果 ( 停用跨域限制 )

    链式调用

    在then方法的resolve/reject参数中返回Promise对象,实现Promise的链式调用。

    getHtml('https://www.baidu.com')
    .then(
        val=>{
            console.log(getTitle(val));
            return getHtml('https://www.sogou.com'); // 返回Promise对象
        }
    ).then(
        val=>{
            console.log(getTitle(val));
            return getHtml('https://www.sina.com'); // 返回Promise对象
        }
    ).then(
        val=>{
            console.log(getTitle(val));
        }
    ).catch(
        err=>{
            console.log(err);
        }
    );

    Safari运行效果 ( 停用跨域限制 )

     

  • 相关阅读:
    比特币安全
    vxworks 的 socket, thread, 信号量模型
    libx264 安卓编译
    优秀的gdb图形化前端调试器
    gdb revert, Go to previous line in gdb
    进藏体会,高原反应
    将 ssh (security shell) 移植到 vxworks
    Pcap4J实现抓包器
    有时候有些服务类的网站就是不走心啊
    都市夜未眠
  • 原文地址:https://www.cnblogs.com/sea-breeze/p/8964923.html
Copyright © 2011-2022 走看看