js基础语法——异步和回调()
概念
同步:即按照书写的顺序执行
异步:即在前一个方法未执行完时,就开始运行后一个方法
异步的好处:
从异步的概念中可以发现,程序异步运行,可以提高程序运行的效率,不必等一个程序跑完,再跑下一个程序,特别当这两个程序是无关的时候。两个程序在一定时间内,可以是同时运行的。写服务器的时候应该会碰到很多这样的例子。可以想象,如果服务器的程序都是同步的,那并发什么的就不存在了吧。
var foo = function(){
console.log('foo begins');
setTimeout(function(){
console.log('foo finishes');
},1000);
};
var bar = function(){
console.log('bar executed');
}
foo();
bar();
//foo begins
//bar executed
//foo finishes
回调
把一个函数作为参数传入到另一个函数中,那么这个作为参数的函数就叫做回调函数
var foo = function(callback){
// foo method
callback();
};
foo(bar);
promise
为了解决js回调地狱
Promise,他是一个对象,是用来处理异步操作的,可以让我们写异步调用的时候写起来更加优雅,更加美观便于阅读。顾名思义为承诺、许诺的意思,意思是使用了Promise之后他肯定会给我们答复,无论成功或者失败都会给我们一个答复,所以我们就不用担心他跑了哈哈。所以,Promise有三种状态:pending(进行中),resolved(完成),rejected(失败)。只有异步返回的结构可以改变其状态。所以,promise的过程一般只有两种:pending->resolved或者pending->rejected。
function getData(url){
return new Promise((resolve,reject)=>{
$.ajax({
url,
success(data){
resolve(data)
},
error(err){
reject(err)
}
})
})
}
let url = 'xxxxxxx'
getData(url).then(res=>{
console.log(res)
})