博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
promise原理及使用方法
阅读量:5172 次
发布时间:2019-06-13

本文共 2123 字,大约阅读时间需要 7 分钟。

Promise 的含义

所谓Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常是一个异步操作)的结果。从语法上说,Promise是一个对象,从它可以获取异步操作的消息。 resolve 其实就是 返回异步操作的数据

/** resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved), *     在异步操作成功时调用,并将异步操作的结果,作为参数传递出去; * reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误, *    作为参数传递出去。*/// promise 结构new Promise((resolve, reject)=>{    $.ajax({        url : 'http://happymmall.com/user/get_user_info.do',        type: 'post',        success(res){            resolve(res);        },        error(err){            reject(err);        }    });}).then((res)=>{    console.log('success:', res);},(err) => {    console.log('error:', err);});

链式promise

var promiseFn1 = new Promise((resolve, reject)=>{    $.ajax({        url : 'http://happymmall.com/user/get_user_info.do',        type: 'post',        success(res){            resolve(res);        },        error(err){            reject(err);        }    });});var promiseFn2 = new Promise((resolve, reject)=>{    $.ajax({        url : 'http://happymmall.com/cart/get_cart_product_count.do',        type: 'post',        success(res){            resolve(res);        },        error(err){            reject(err);        }    });});promiseFn1.then(()=>{    console.log('promiseFn1 success');    return promiseFn2;}).then(()=>{    console.log('promiseFn2 success');});

下面是一个用Promise对象实现的 Ajax 操作的例子。

const getJSON = function(url) {  const promise = new Promise(function(resolve, reject){    const handler = function() {      if (this.readyState !== 4) {        return;      }      if (this.status === 200) {        resolve(this.response);      } else {        reject(new Error(this.statusText));      }    };    const client = new XMLHttpRequest();    client.open("GET", url);    client.onreadystatechange = handler;    client.responseType = "json";    client.setRequestHeader("Accept", "application/json");    client.send();  });  return promise;};getJSON("/posts.json").then(function(json) {  console.log('Contents: ' + json);}, function(error) {  console.error('出错了', error);});

 

转载于:https://www.cnblogs.com/haonanZhang/p/9224695.html

你可能感兴趣的文章
开博@纪念
查看>>
linux的正则表达式
查看>>
Android 中EditText 与Keyboard 引起的UI bug
查看>>
20162316刘诚昊 2016-2017-2《程序设计与数据结构》课程总结
查看>>
代理模式---动态代理之JDK
查看>>
POJ 1182 食物链
查看>>
python xml解析和生成
查看>>
MySQL MGR集群搭建
查看>>
吴恩达深度学习笔记 cousrse4 week1作业
查看>>
程序员前辈走过的路
查看>>
UBUNTU 10.04 更新源 补充
查看>>
outputcache
查看>>
pc110301QWERTYU
查看>>
go 数组
查看>>
ilspy 点击根节点后进行解析的方法
查看>>
promise原理及使用方法
查看>>
MVC实例应用模式
查看>>
欧拉回路和欧拉路径
查看>>
Java 推荐读物与源代码阅读
查看>>
BlogEngine.Net架构与源代码分析系列part1:开篇介绍
查看>>