在理解Promise之前,我们需要理解什么时同步与异步。
转:https://segmentfault.com/a/1190000004322358
假设存在一个函数A:
A(args...);
同步:如果在函数A返回的时候,调用者就能够得到预期结果(即拿到了预期的返回值或者看到了预期的效果),那么这个函数就是同步的。
例如:
Math.sqr(2);
console.log('Hi');
第一个函数返回时,就拿到了预期的返回值:2的平方根
第二个函数返回时,就看到了预期的效果:在控制台打印一个字符串。
所以这两个函数都是同步的。
异步:如果在函数A返回的时候,调用者还不能够得到预期结果,而是需要在将来通过一定的手段得到,那么这个函数就是异步的。
例子:
在console中执行setTimeout(function(){console.log("10000")},10000);console.log(10);
执行结果:10 10000.
其中setTimeout(fn,100000)就是异步过程的发起函数,fn是回调函数。
用生活中的例子总结一个同步与异步就是:
在公路上,汽车一辆接一辆,有条不紊的运行。这时,有俩车坏掉了。假如它停在原地进行修理,那么后面的车就会被堵住没法行驶,交通就乱套了。幸好旁边有应急车道,
可以把故障车辆推到应急车道修理,而正常的车流不会受到任何影响。等车修好了,再从应急车道回到正常车道即可。唯一影响的就是,