异步编程有哪几种方法来实现?
1.背景介绍
2.知识剖析
2.1异步编程有哪几种方法
1.回调函数
2.2回调函数
这是异步编程最基本的方法。回调函数的优点是简单,轻量级(不需要额外的库)。缺点是各个部分之间高度耦合(Coupling),流程会很混乱,而且每个任务只能指定一个回调函数,而且,如果再嵌套多几层,代码会变得多么难以理解
fn1(function(){
2.3
2.4
Promises对象
3.常见问题
4.解决方案
5.编码实战
function fn1(f) {
alert(1);
f();
};
function fn2(f) {
alert(2);
f();
};
function fn3() {
alert(3);
};
fn1(function () {
fn2(fn3);
});
//回调函数
// 同步回调
function A(callback){
console.log("I am A");
callback(); //调用该函数
}
function B(){
console.log("I am B");
}
A(B);
// 异步回调
function f1(n, callback) {
setTimeout(function () {
var count = 0,
i, j;
for (i = n; i > 0; --i) {
for (j = n; j > 0; --j) {
count += 1;
}
};
console.log(1);
}, 1000)
callback();
console.log(2);
}
function f2() {
console.log("函数f2")
}
function f3() {
console.log(3)
setTimeout(function () {
console.log(4)
}, 5000)
console.log(5)
}
f1(100000, f3);
f2();
f3();
//事件监听
function fb() {
alert(9999)
}
$("#b1").on('click', fb);
// promise
function f7() {
var def = $.Deferred();
setTimeout(function () {
// f1的任务代码
console.log("this is f7");
def.resolve();
}, 500);
return def.promise();
}
function f8() {
console.log("this is f8");
}
function f9() {
console.log("this is f9");
}
f7().then(f8).then(f9);
6.扩展思考
7.参考文献
8.更多讨论
1,问:何时使用异步
答:耗时较长的任务,影响后面任务执行,造成浏览器失去响应,都可以使用异步,
2,问:回调函数一定是异步吗
答:不一定,回调函数有同步回调和异步回调,
3,问:promise是什么
答:Promises对象是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口。 简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数,具体知识可以去网上详细了解一下promise。
文章来源: 异步编程有哪几种方法来实现