Promise()

function want() {
    console.log('这是你想要执行的代码');
}

function fn(want) {
    // console.log('这里表示执行了一大堆各种代码');

    // 返回Promise对象
    return new Promise(function (resolve, reject) {
        if (typeof want === 'function') {
            resolve(want);
        } else {
            reject('TypeError: ' + want + '不是一个函数')
        }
    }).then(function (want) {
        want();
    }).catch(function (err) {
        console.log(err);
    })
}

fn(want)

数据怎么传递

let fn = function (num) {
    return new Promise(function (resolve, reject) {
        if (typeof num === 'number') {
            resolve(num);
        } else {
            reject('typeError');
        }
    });
};

fn(2).then(num => {
    console.log('first:' + num);
    return num + 1;
}).then(num1 => {
    console.log('s:' + num1);
    return num1 + 1;
}).then(num2 => {
    console.log('t:' + num2);
    return num2 + 1;
});

封装一个ajax

const url = 'https://hq.tigerbrokers.com/fundamental/finance_calendar/getType/2017-02-26/2017-06-10'

function getJSON(url) {
    return new Promise(function (resolve, reject) {
        let XHR = new XMLHttpRequest();
        XHR = open('get', url, true);
        XHR = send();
        XHR.onreadystatechange = function () {
            if (XHR.readyState === 4) {
                if (XHR.status === 200) {
                    try {
                        let response = JSON.parse(XHR.responseText);
                        resolve(response);
                    } catch (e) {
                        reject(e);
                    }
                }
            } else {
                reject(new Error(XHR.statusText))
            }
        }
    })
}

getJSON(url).then(resp => {
    console.log(resp)
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在es6使用已经很普遍的今天,我再说Promise各种API及其原理的话也不过是锦上添花。Promise的重要性,...
    绰号陆拾柒阅读 7,579评论 2 9
  • 去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6...
    猪猪侠闯天下阅读 4,451评论 0 0
  • 去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6...
    yzc123446阅读 2,087评论 0 1
  • 什么是同步异步 同步:当我们发出了请求,并不会等待响应结果,而是会继续执行后面的代码,响应结果的处理在之后的事件循...
    liwuwuzhi阅读 3,196评论 1 1
  • ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性...
    萤火虫de梦阅读 2,662评论 0 0