我们前面学习过,当想要确保某代码在某某之后执行时,可以利用函数调用栈,将想要执行的代码放入回调函数中,
// 一个简单的封装
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(得到了错误