异步编程
概念解析
- 同步调用
程序是顺序执行的,必须执行完一段程序之后才能够执行下一段程序
也称作阻塞式调用 异步调用
一段异步调用代码还未执行完毕,可以继续执行下一段代码。当代码执行完以后,通过回调返回继续执行相应的逻辑,而不耽误其他代码的执行。举例:在考试的时候,有的同学思考一道题目,当问题没有解决的方法时会继续看下一题,下一题题目的解答不会受到上一题没有解决的影响,当上一题题目有思路的时候则返回继续做题,这就回调的过程。(回调不等于异步调用)
回调是一种解决异步函数执行结果的处理方法。在异步调用,如果我们希望讲执行的结果返回并且处理时,可以通过回调函数的方法解决。
代码举例
//异步调用的例子
function Person(){
this.think = function(callback){
//定义person对象的think方法
setTimeout(function(){console.log('thinking-----');callback();}, 5000);
}
//answer方法
this.answer = function(){
console.log('I am answering other question');
}
}
var person = new Person();
person.think(function(){
console.log('thinking 5 second,get the right answer');
});
person.answer();
//只是简单的回调,并没有异步
function waitFive(name,function_name){
var pus = 0;
var currentDate = new Date();
while(pus<5000){
var now = new Date();
pus = now - currentDate;
}
function_name(name);
}
function echo(name){
console.log(name);
}
waitFive("qjj",echo);
console.log("over");