1.何为同步/异步编程?
程序是一条条有序的语句集,如果运行时,按照语句的顺序,一条一条依次执行,上一条语句执行完毕,才能执行下一条语句,那么就是同步编程。异步编程则是,可能出现上一条语句没执行完毕,下一条语句可以开设执行。
同步可以理解为程序语句的顺序和执行顺序是一致的,异步则可能出现语句的顺序与执行的完成顺序不一致(语句开始执行的时间顺序和程序语句顺序还是一致的)。
2、异步的目的是?
异步可以提高执行效率。如果程序中的某一条语句需要等待网络请求的数据,那么等该条语句执行完毕,再执行下一条语句,会降低程序的执行效率(大量时间在等待)。
3.JavaScript Promise的理解
Js 提供了 Promise对象来简化异步编程。假如某个程序,有一条语句需要访问远程服务器的数据,如果同步编程方式,需要等远程数据返回,才能执行下一条语句。
用Promise对象来访问远程服务器,实现异步操作。同步编程时,访问远程服务器的语句将阻塞,一直等到数据返回。异步编程时,将需要等待的语句放到一个函数中,并以该函数作为参数,创建一个承若对象(Promise),该对象访问服务器,在服务器成功返回数据或失败时,会调用回调函数来分别处理。因此创建Promise时,要传入两个回调函数作为参数。
prm= new Promise(function(resolve,reject){
if(...){
resolve("success");//成功,调用回调函数resolve
}else{
reject("failure");//失败,调用回调函数reject
}
});
prm.then(success).catch(reject) //success,reject分别为成功和失败时的处理函数(实参)