promise的使用
Posted webblog-gqs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise的使用相关的知识,希望对你有一定的参考价值。
之前使用promise都是用时会,用时理解,过后一段时间没有又忘了,今天有空正好整理一下,方便日后自己查阅。-- 代码来源于阮一峰老师的 promise
Promise有4个方法:
[ resolve, reject, all, race ]
常见的resolve和reject
resolve: 成功时的回调函数
reject: 失败时的回调函数
//定义 Promise 的回调函数 function test(resolve, reject) { //采用随机数来模拟成功和失败。 var timeOut = Math.random() * 2; console.log(‘set timeout to: ‘ + timeOut + ‘ seconds.‘); setTimeout(function(){ if (timeOut < 1) { // 成功 resolve console.log(‘call resolve()....‘); resolve(‘200 ok‘); } else { // 失败 reject console.log(‘call reject()...‘); reject(‘timeout in:‘ + timeOut + ‘ seconds.‘); } }, timeOut * 100); } new Promise(test) .then(result => { //成功后进行的代码操作 console.log(‘success‘); }) .catch(reason => { //失败后进行的代码操作 console.log(‘fail‘); })
这里的test回调函数是来处理请求数据,接口等的, 而后面的then就是来执行请求成功后的操作, catch是来处理失败后的操作。
Promise.all(数组) 同时进行的异步操作
// Promise.all(数组) 同时进行的异步操作 var p1 = new Promise((resolve, reject)=>{
// 采用随机数来模拟成功和失败。 var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 600, ‘P1‘); } else { setTimeout(resolve, 600, ‘P1‘); } }) var p2 = new Promise((resolve, reject)=>{
//采用随机数来模拟成功和失败。 var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 300, ‘P2‘); } else { setTimeout(resolve, 300, ‘P2‘); } }) //p1,p2操作成功就执行then Promise.all([p1, p2]).then(results=>{ console.log(‘成功: ‘+results); }) //p1,p2其中有一个操作失败就执行catch .catch(reason=> { console.log(‘错误:‘+reason); })
Promise.race([p1, p2]) 对同时进行的异步操作,那个先执行完就采用那个(比如:同时向两个URL读取用户的个人信息,只需要获得先返回的结果即可。[阮一峰老师的比如])
var p1 = new Promise((resolve, reject)=>{ var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 600, ‘P1‘); } else { setTimeout(resolve, 600, ‘P1‘); } }) var p2 = new Promise((resolve, reject)=>{ var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 300, ‘P2‘); } else { setTimeout(resolve, 300, ‘P2‘); } }) // p1,p2同时操作,哪一个先得到结果就执行那个,成功执行then,失败就执行catch Promise.race([p1, p2]).then(results=>{ console.log(‘成功: ‘+results); }).catch(reason=> { console.log(‘错误:‘+reason); })
完(皮皮虾, 皮一下)。
以上是关于promise的使用的主要内容,如果未能解决你的问题,请参考以下文章