异步编程有哪几种方法来实现

匿名 (未验证) 提交于 2019-12-03 00:32:02

异步编程有哪几种方法来实现?

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。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!