Promise学习笔记(一)

来源:互联网 发布:cf检测数据异常 编辑:程序博客网 时间:2024/06/05 03:13

学习笔记(一) Promise

1、什么是 Promise

在英文的概念中,有一个解释为承诺,可以这么理解,你完成了你的面试之后HR给你明确的答复说,你回去等通知结果出来我会给你个答复,然而结果发现总是久久没有结果。但这里的 Promise比这里靠谱得多,不管是成功还是失败都会给你一个结果。

Promise 对象用于异步计算。一个 Promise 表示一个现在、将来或永不可能可用的值。官方说明:promise

2、 Promise解决的的问题

Promise可以用来处理异步请求,从而达到同步运行的效果,举个例子,还是上面的面试,异步的请求在例子中体现在哪里?就是在面试这家公司的时候并不妨碍你继续投简历到其他公司,而同步呢?比如你想:”如果我被这家公司录用了,那么我就去哪家公司上班“。而这个上班的动作就是你必须在被通知录用后才能同步执行去公司上班的动作。

3、Promise语法

1.promise对象
new Promise(function(resolve, reject){
....

})

构造函数里面的参数是一个 function ,在哪个function里面有两个函数,作用分别是接受(resolve)和拒绝(reject).由上面的代码知道,最终new出来的是一个Promise对象,它可以调用than(…),里面的参数分别是succeed,error,类型都为function,当操作成功之后,在then里面调用succeed方法。

粗糙的代码贴上,(在CSDN上,按F12,打开控制台,此代码贴上可做测试)

      var demo = function(){        var prom = new Promise(function (resolve,reject) {            xhr = new XMLHttpRequest();            xhr.onloadend = function () {                alert(this.readyState);                reject(this.responseText);                //resoleve(this.responseText);            }            xhr.open("get","http://blog.csdn.net/pk/commentlist.html?id=45&page=1",true);            xhr.setRequestHeader('Cache-Control',"no-cache");        xhr.send();        });        return prom;    }    var cuccess = function (data) {        alert("成功" + data);    }    var error = function (error) {        alert("失败" + error);    }

promise.then()调用之后,返回的是一个Promise,所以可以实现链式调用,在ES6规范中新增方法all,
用法如下:


Promise.all(Iterator)
var p1 = new Promise(function(resolve,rejecte){
resolve(“成功” + “Holle world”);
})

var p2 = new Promise(function(resolve,rejecte){    rejecte("失败" + "Holle world");})Promise.all([p1,p2]).then(function(data){console.log(data);},function(error){console.log(error);}

);

这里的Iterator为数组,数组元素为promise对象,代码执行结果如下:
这里写图片描述

之前说到的,Promise解决 的是前端js的异步问题,那么在这里我科普一下,js有个同步的问题,使用过项目配置工具比如SVN或githup的人都知道同步代码,要求就是两端代码要一致,然而js的同步则是指一个方法执行完成之后我才接着执行,js的异步是指在做一件事的同时我还要花空余时间去做其他事情,js异步的例子上面有,举个js同步例子:交学费和上学两件事,没有交学费那么是没办法读书的。

学习参考:Promise学习资料一

Promise学习资料二

原创粉丝点击