我是靠谱客的博主 昏睡电源,最近开发中收集的这篇文章主要介绍promise请求数据用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Promise简介

Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大。ES6将其写进了语言标准,统一了语法,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息,代码十分简洁易读没有复杂的花括号嵌套,把异步代码写成同步的感觉。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="jquery.js" charset="utf-8"></script>
    <script>
	        Promise.all([
	          $.ajax({url: 'data/1.txt', dataType: 'json'}),
	          $.ajax({url: 'data/2.txt', dataType: 'json'}),
	          $.ajax({url: 'data/3.txt', dataType: 'json'})
	        ]).then(arr=>{
	          let [data1, data2, data3]=arr;  //结构赋值
	          console.log(data1, data2, data3);
	        }, ()=>{
	          alert('失败了');
	        });
    </script>
  </head>
  <body>

  </body>
</html>

Promise特点:

  • 它有三种状态:Pending(进行中)Resolved(已完成)Rejected(失败)
  • 一旦建立,就无法取消。这是它的缺点。

基本写法:

//模拟成功
let flag=true;
let p=new Promise ((resolve,reject)=>{
    if(flag){
       resolve('success')
    }else{
      reject('error')
    }
 })
 p.then(res->console.log(res),error=>console.log(error))
 输出 success
 //这里我们不推荐在then中的第二参数传入error的回调,而是用catch代替:
   //模拟失败
let flag=false;
let p=new Promise ((resolve,reject)=>{
    if(flag){
       resolve('success')
    }else{
      reject('error')
    }
 })
   p.then(res->console.log(res))
     .catch(error=>console.log(error))

Promise.race([…promise])

  • 只要有一个promise的状态发生改变,Promise.race就返回状态。

      let p1=new Promise ((resolve.,rejece)=>{
          setTimeout(() => {
              resolve('step one');
         }, 1000);
      })
    
    let p2 = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve('step two');
      }, 500);
    });
     let p = Promise.race([p1, p2]);
      p.then((res) => console.log(res))
      .catch((error) => console.log(error));
      //输出 step two
    

简单的一个应用 先处理下载任务 再处理保存任务(这里我就用setTimeout模拟了)

let down=(reslive,reject)=>{
      setTimeout(()=> {
      resolve('下载任务处理完成');
    }, 1000);
}
 let save = (resolve, reject) => {
    setTimeout(() => {
      resolve('文件保存完成');
    }, 500);
  }
  let p=()=>{
    new Promise(down).then(res=>{
       console.log(res);
        return  new Promise(save)
    })
    .then(res=>console,log(res))
    .catch(err=>console.log(err))
  }
  p();
  一定要注意promise一旦建立,立即执行。

以上是看到的一些好的博客文章整理成了这些,为了以后能更好的使用和理解Promise

最后

以上就是昏睡电源为你收集整理的promise请求数据用法的全部内容,希望文章能够帮你解决promise请求数据用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部