七校项目中使用promise处理回调地狱问题

//封装一个promise
var ajaxPromise = function(param){
		return new Promise(function(suc,fail){
			debugger;
			console.log(param)
                       //ajax请求
			$.ajax({
				url:param.url,
				type:"post",
				async:false,
				data:param.data,
				dataType:"json",
				success: function(res) {
					suc(res);
				      },
				error: function(err) {
				   fail(err);
		      }
			})
		})
	}
	var step1 = ajaxPromise({url:‘Student_getStudentInfo‘,data:{phoneNum:sessionPhoneNum}})
		.then(function(res){
			console.log("jjjjj");
                        //返回一个新的之前封装的promise
			return ajaxPromise({url:"ApplyForm_getSchoolList",data:{}})
		})
		.then(function(res){
			console.log("gsjgj");
		},function(err){
			console.log("jfdhskjfhsdfhsj");
		})
		.catch(function(err){
			console.log(ajaxPromise);
			console.log("fkdjskjsdk");
		})
});

  then方法里面可以有两个函数  第一个是当将Promise的状态变为fuifill的时候,后面一个函数是将promise状态变为reject的时候,

但是其实catch也可以处理这样的reject 以及本来就需要处理的异常的报错所以不能简单党的将then理解为请求成功时执行的

原文地址:https://www.cnblogs.com/theworldofbeisong/p/9533120.html

时间: 2024-08-29 21:23:22

七校项目中使用promise处理回调地狱问题的相关文章

基于PROMISE解决回调地狱问题

回调地狱问题: 在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套的回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱.比如说你要把一个函数 A 作为回调函数,但是该函数又接受一个函数 B 作为参数,甚至 B 还接受 C 作为参数使用,就这样层层嵌套,人称之为回调地狱,代码阅读性非常差. 例如:要发送三个异步的请求要求前面一个请求完成之后再依次发送请求. $.ajax{ url:'url1', success:result=>{ $.ajax{ url:'

async + promise 解决回调地狱

// 解决异步回调地狱的方案: async + promise async function writeFile() { // 打开文件 const fd = await new Promise((resolve, reject) => { // 执行 打开文件 异步操作 fs.open('c.txt', 'w', (err) => { if (!err) { // 将promise对象的状态改成 成功状态 resolve(); } else { // 将promise对象的状态改成 失败状态

js中promise解决callback回调地狱以及使用async+await异步处理的方法

1.callback回调地狱 function ajax(fn) { setTimeout(()=> { console.log('你好') fn() }, 1000) } ajax(() => { console.log('执行结束') ajax(()=>{ console.log('执行结束') ajax(()=>{ console.log('执行结束') ajax(()=>{ console.log('执行结束') }) }) }) }) 2.promise解决回调地狱

ArcGIS API for JavaScript 4.2学习笔记[7] 鹰眼(缩略图的实现及异步处理、Promise、回调函数、监听的笔记)

文前说明:关于style就是页面的css暂时不做评论,因为官方给的例子的样式实在太简单了,照抄阅读即可. 这篇文章有着大量AJS 4.x版本添加的内容,如监听watch.Promise对象.回调函数.异步处理等内容,原理性的东西我会在文末解释,各位看官不用担心看不懂,我尽量用通俗的语言解释这些. 惯例,如果不习惯从头看到尾,可以直接跳到后面看总结. 大家应该看过商业地图的缩略图功能吧?以度娘地图为例,在使用街景地图的时候,左下角会出现一个地点一样的2D小地图: 这个就是鹰眼功能的应用,在很多桌面

Laravel项目中使用markdown编辑器及图片粘贴上传七牛云

本文为转载,原文:http://www.chairis.cn/blog/article/15 Markdown Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式.本次我们选用的编辑器是: Editor.md,官网中也有很详细的介绍.从官网中下载安装下载的内容中,也有很多demo可以借鉴.在下载的包中,去除一些多余的内容,只保留我们需要的内容,然后加到项目的public目录下,如下图红色框内的内容: 项目中使用 在项目中使用edit

简析项目中常用的七参数转换法和四参数转换法以及涉及到的基本测量学知识

1.背景 在了解这两种转换方法时,我们有必要先了解一些与此相关的基本知识.我们有三种常用的方式来表示空间坐标,分别是:经纬度和高层.平面坐标和高层以及空间直角坐标. 2.经纬度坐标系(大地坐标系) 这里我首先要强调:天文坐标表示的经纬度和大地坐标系表示的经纬度是不同的.所以,同一个经纬度数值,在BJ54和WGS84下表示的是不同的位置,而以下我说的经纬度均指大地坐标系下的经纬度.大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系.下面我跟大家大致谈谈其中涉及到的两个重要概念. 2.1大地

salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到了小兵同学的指点,get到了一个简单实用的知识.即使用html- + attribute方式,在visualforce标签解析成html标签时,添加相关属性,从而实现一些功能性的校验等功能. 比如我们经常会用到<apex:inputTextarea>标签来放置textarea字段的前台显示,而对于

【转】常见算法在实际项目中的应用

原文转自:http://blog.jobbole.com/52669/ 近日Emanuele Viola在Stackexchange上提了这样的一个问题,他希望有人能够列举一些目前软件.硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几点要求: 使用这些算法的软件或者硬件应该是被广泛应用的: 例子需要具体,并给出确切的系统.算法的引用地址: 在经典的本科生或者博士的课程中应该教过这些算法或者数据结构: Vijay D的回复获得了最佳答案,他的具体回复内容如下:

项目中的常见算法

http://cstheory.stackexchange.com/questions/19759/core-algorithms-deployed/ 本文原始内容来源于 stackexchange,遵循 cc-wiki 协议: 近日 Emanuele Viola 在 Stackexchange 上提了这样的一个问题,他希望有人能够列举一些目前软件.硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几点要求: 使用这些算法的软件或者硬件应该是被广泛应用的: 例子