js系列四十二:回调地狱的解决方法

我们前面学习过,当想要确保某代码在某某之后执行时,可以利用函数调用栈,将想要执行的代码放入回调函数中,

// 一个简单的封装
function want() {
	console.log("这是你想要执行的代码");
}

function fn() {
	console.log("这里表示执行了一大堆各种各样代码");
	// 其他代码执行完毕之后,最后执行回调函数
	want && want();
}

fn(want);

利用回调函数封装,是我们在初学javascript时常常会使用的技能.
除了利用函数调用栈的执行顺序之外,还可以利用队列机制来确保我们想要的代码压后执行.

function want() {
	
}

function fn(want) {
	want && setTimeout(want, 0);
	console.log('');
}

fn(want);

与setTimeout类似,promise也可以认为是一种任务分发器,它将任务分配到promise队列中,通常的流程是首先发起一个请求,然后等待并处理请求结果.
简单的用法如下所示

var tag = true;
var p = new Promise(function(resolve, reject) {
	if(tag) {
		resolve('treu');
	} else {
		reject("false");
	}
})

p.then(function(result) {
		console.log(result)
})
.catch(function(err) {
	console.log(err);
})

new Promise表示创建一个Promise对象的实例
Promise 函数中的第一个参数作为一个回调函数,通常情况下,在这个函数中,会执行发起请求操作,并修改结果的状态值.

请求结果有三种状态,分别是pending(等待中), resolved(得到我们想要的结果),rejected(得到了错误

你可能感兴趣的:(javascript入门到进阶)