Promise

背景术语

同步执行与异步执行

同步执行

主函数的调用后的操作子函数的返回操作的时间同步,即等待被调用任务执行完毕后,再进行调用函数后的操作。
在下面的例子中,如果call函数的执行和callee函数的执行同步,那么在callee返回someValue后,才能执行call中的some code

function call(){
   
	function callee(){
   
		return someValue;
	}
	callee();
	// some code
}
异步执行

主函数的调用子函数的返回的时间不同步,即调用函数不等待被调用函数的返回值,继续执行下一步操作。
在下面的例子中,如果call函数的执行和callee函数的执行异步,那么在callee返回someValue前,call继续执行some code

function call(){
   
	function callee(){
   
		return someValue;
	}
	callee();
	// some code
}

因为JavaScript中的代码都是单线程执行,所以JS的操作和事件都必须是异步执行
异步执行可以利用回调函数实现。

回调函数

函数也可以作为参数被传递。

回调函数执行过程中参与的函数

主函数调度其余函数的master
回调函数独立的功能函数,例如写文件函数
中间函数介于主函数和回调函数的桥梁,登记回调函数,并且通知主函数

回调函数执行的流程
  1. 主函数 =调用=> 回调函数
  2. 中间函数 =登记=> 回调函数
  3. =触发=> 回调函数事件
  4. =调用=> 回调函数
  5. =响应=> 回调事件

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。
在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发回调事件,店员给你打电话叫做 调用回调函数,你到店里去取货叫做响应回调事件

回调函数实现异步执行
function callback() {
   
    console.log('Done');
}
console.log('before setTimeout()');
setTimeout(callback, 1000); // 1000ms
console.log('after setTimeout()');

console输出台为

before setTimeOut()
after setTimeout()
Done

所以,异步操作将会在将来的某个时间点触发一个函数调用
AJAX即是异步执行的操作

var ajax = ajaxGet('http://...'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值