在需要依赖完成的ajax请求可使用promise保证执行顺序 在第一个请求正确返回后再发送第二个请求

/*
定义一个使用promise的ajax请求,这里依赖jquery
参数中请求url为必填参数
*/
const ajaxPromise= param => {
return new Promise((resovle, reject) => {
$.ajax({
"type":param.type || "get",
"async":param.async || true,
"url":param.url,
"data":param.data || "",
"success": res => {
resovle(res);
},
"error": err => {
reject(err);
}
})
})
} /*
第一个请求
*/
let step1 = () => {
ajaxPromise({
"url":"",
}).then(res => {
console.log("第一个请求正确返回==>"+res);
step2(res);
}).catch(err => {
console.log("第一个请求失败");
})
} /*
第二个请求
*/
let step2 = (res) => {
ajaxPromise({
"type":"get",
"url":"",
"data":{"name":res}
}).then(res => {
console.log("第二个请求正确返回==>"+res);
}).catch(err => {
console.log("第二个请求失败==>"+err);
})
} step1();

  原生js写ajaxpromise对象

const ajaxPromise =  param => {
return new Promise((resovle, reject) => {
var xhr = new XMLHttpRequest();
xhr.open(param.type || "get", param.url, true);
xhr.send(param.data || null); xhr.onreadystatechange = () => {
var DONE = 4; // readyState 4 代表已向服务器发送请求
var OK = 200; // status 200 代表服务器返回成功
if(xhr.readyState === DONE){
if(xhr.status === OK){
resovle(JSON.parse(xhr.responseText));
} else{
reject(JSON.parse(xhr.responseText));
}
}
}
})
}

  

ajax和promise的结合使用的更多相关文章

  1. ajax 的 promise

    $.when().done().fail() $.when($.ajax("test1.html"),$.ajax("test2.html")).done(fu ...

  2. ajax和promise及axios和promise的结合

    链接:https://www.cnblogs.com/mmykdbc/p/10345108.html 链接2:https://blog.csdn.net/UtopiaOfArtoria/article ...

  3. 框架基础:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码

    距离上一篇博客书写,又过去了大概几个月了,这段时间暂时离开了这个行业,让大脑休息一下.一个人旅行,一个人休息,正好也去完成一个目标 --- 拥有自己的驾照.当然,也把自己晒的黑漆马虎的.不过这一段时间 ...

  4. 前端通信:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码(改迭代已作废,移步迭代10)

    该迭代已作废,最新的请移步这里:https://www.cnblogs.com/GerryOfZhong/p/10726306.html 距离上一篇博客书写,又过去了大概几个月了,这段时间暂时离开了这 ...

  5. ABP文档 - Javascript Api - AJAX

    本节内容: AJAX操作相关问题 ABP的方式 AJAX 返回信息 处理错误 HTTP 状态码 WrapResult和DontWrapResult特性 Asp.net Mvc 控制器 Asp.net ...

  6. 关于promise

    后来发现promise是解决异步的一个链式调用的好的方法,避免了所谓的回调的监狱, 它有三个状态,未作为,已经完成和已经失败,起始是未作为,然后有了动作总会有个结果, 分成resolve,已经顺利ok ...

  7. ES6之Promise学习与实践

    1.前言 在平时的业务开发中,前端通常需要请求后台获取数据,或者NodeJs读取文件等等一系列的异步操作,我们通常需要利用异步操作的结果或者对异步操作的结果进行处理.通常我们的解决方案是:在异步操作成 ...

  8. promise async

    最简用  promise let res = function () { return new Promise((resolve, reject) => { // 返回一个promise set ...

  9. react中使用Ajax请求(axios,Fetch)

    React本身只关注于界面, 并不包含发送ajax请求的代码,前端应用需要通过ajax请求与后台进行交互(json数据),可以使用集成第三方ajax库(或自己封装) 常用的ajax请求库 jQuery ...

随机推荐

  1. 关于Unity中的特殊文件目录和资源管理(专题四)

    编辑器扩展目录: 1: Editor目录 Editor文件夹可以在根目录下,也可以在子目录里,夹就可以; Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用; ...

  2. Numpy的array数组和标量之间的运算

    矢量化 数组很重要,因为它使你不用编写循环即可对数据执行批量运算.这通常就叫做矢量化(vectorzation) 数组与数组的运算 数组与标量的算术运算

  3. JDBC存储过程调用

    在讨论JDBC Statement教程文章时,我们已经学习了如何在JDBC中使用存储过程. 本教程文章与该部分类似,但它将讲解演示有关JDBC SQL转义语法的其他信息. 就像Connection对象 ...

  4. (转)使用FFMPEG类库分离出多媒体文件中的H.264码流

    出自:http://blog.csdn.net/leixiaohua1020/article/details/11800877   在使用FFMPEG的类库进行编程的过程中,可以直接输出解复用之后的的 ...

  5. Python_问题收录总结

    python IndentationError: unindent does not match any outer indentation level的问题 用python编个作业,我先用的note ...

  6. SQL Server 定时执行SQL语句的方法

    SQL SERVER 定时任务,你可以启动一下.不过要想更加直观的控制,直接写一个程序,定时执行你的存储过程. 1.设置“SQL Server 代理”(SQL Server Agent)服务随系统启动 ...

  7. pyhont备份php代码脚本

    #!/usr/bin/env python # encoding: utf-8 import time import os import sys import logging #create logg ...

  8. perl 模块的创建以及制定perl 模块的路径

    1) perl 模块的创建 perl 模块的后缀名为.pm, 其中的内容和一般的perl脚本相同, perl模块中通常放置可重用的函数以及变量, 比如创建一个fasta.pm,里面包含一个统计fast ...

  9. Java 利用POI操作PPT

    解析PPT文件中的图片 import java.io.File; import java.io.FileOutputStream; import org.apache.poi.hslf.HSLFSli ...

  10. 阿里云Centos6.9安装图形化界面

    yum -y groupinstall "X Window System" "Chinese Support" "Desktop"