美文网首页
ES6 Promise简单封装

ES6 Promise简单封装

作者: rookie_简书 | 来源:发表于2018-02-02 15:57 被阅读0次

/*

* Promise --是异步编程的一种解决方案

            消除异步操作(有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数)

*/

//下面就一起来看看怎么封装一个简单的Promise异步请求 :

createPromise=(url,type)=>{ //传入  路径,请求方式  作为参数

//返回Promise 对象

return new Promise((resolve,reject)=>{

//resolve 成功

//reject 失败

$.ajax({

type,

url,

// url:url  名字 值 一样可以简写

dataType:'json',

//成功

success(res){

//成功  调用 resolve

resolve(res)

},

//失败

error(err){

//失败 调用 reject

reject(err)

}

});

})

}

/*

* Promise.all方法接受一个数组作为参数都是一个Promise实例,只有这些 实例 状态都成功 promise才会成功,返回值为一个数组,

  这些参数参数中有一个被reject,那么promise状态就变成reject 

*/

/*

* Promise.then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数

*

*/

// Promise.all([

// createPromise('data/json1.json'),

// createPromise('data/json2.json')

// ]).then((res)=>{

// console.log(res)

// },(err)=>{

// console.log(res)

// })

/*

* Promise.prototype.catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数

*/

Promise.all([

createPromise('data/json1.json','post'),

createPromise('data/json2.json','post')

]).then((res)=>{

console.log(res)

}).catch((res)=>{

console.log('错误执行'+res)

})

//Promise.race  我称它为  竞速

/*

* Promise.race方法同Promise.all方法 写法一样 同样是将多个 Promise 实例,包装成一个新的 Promise 实例,

* 只要这些实例之中有一个实例率先改变状态,Promise的状态就跟着改变,那个率先改变的 Promise 实例的返回值,就是最终执行结果的返回值

*/

/*

Promise.race([

createPromise('data/json1.json'),

createPromise('data/json2.json')

]).then((res)=>{

console.log(res)

},(err)=>{

console.log(res)

})

*/

// 高版本JQuery(我这里用的是3.1.1)可直接调用Promise,用法如下:

/*

Promise.all([

$.ajax({url:'data/json1.json',dataType:'json'}),

$.ajax({url:'data/json2.json',dataType:'json'}),

]).then((res)=>{

console.log(res)

},(err)=>{

console.log(err)

})

*/

ps:如有错误我改,望轻喷,谢谢大家!

相关文章

  • 微信小程序es6的class请求封装

    基于promise的小程序代码api封装。 新建promise.js,用es6类封装的方法。 新建request....

  • ES6 Promise简单封装

    /* * Promise --是异步编程的一种解决方案 消除异步操作(有了Promise对象,就可以...

  • IE浏览器error:Promise未定义

    原因: 使用axios会报错,因为axios本质上是封装了ES6语法的promise,而promise在ie上并不...

  • ES6-Promise对象

    1:什么是promise对象 promise对象是ES6新增的,为了解决回调函数的多层嵌套问题,用于封装异步任务 ...

  • 12、【ES6】Promise

    Promise 是 ES6 引入的异步编程的新解决方案。语法上 Promise 是一个构造函数,用来封装异步操作并...

  • JavaScript——request封装

    request封装——微信小程序使用async,await ES5 参考代码 ES6——promise 这里以微信...

  • 探究promise

    前言 大家都知道Promise是ES6的一个针对回调地狱的一种解决方案,我们可以用promise去封装异步请求,用...

  • ES6--Promise

    学过ES6的同学大概都知道Promise,可想而知Promise在ES6中很重要。 Promise对象代表了未来将...

  • (十)Promise和fetch

    Promise 就是为了防止回调地狱 Fetch Fetch 就是ES6提供的一个异步接口,这样省的自己封装了

  • Promise.done(),Promise.finally()

    es6 Promise.done(),Promise.finally()promise对象的finally函数为什...

网友评论

      本文标题:ES6 Promise简单封装

      本文链接:https://www.haomeiwen.com/subject/wodezxtx.html