Javascript异步回调模式包示例
Web页面的交互变得越来越复杂,Javascript的异步操作也越来越多,例如,当请求完成时,一个普通的Ajax请求需要对操作做出响应。请求通常是异步的。在请求过程中,用户可以进行其他操作,不阻塞页面。这种异步交互作用对用户是很友好的。但对于开发商来说,它是处理这类操作很不友好,异步请求完成必须在回调函数中定义的操作和功能必须调用请求完成时,这种非线性的异步编程模式将使开发商很不舒服,但也带来了很多不便,增加耦合和复杂的代码,代码的组织也会很不雅观,大大降低了代码的可维护性。情况比较复杂,如果一个操作等多个异步Ajax请求就可以完成的,会有一个嵌套的回调功能N,如果需要嵌套几层,那么你就可以快乐地生活。看看下面常见的异步函数。
复制代码代码如下所示:
无功showmsg =函数(){()
setTimeout(){()函数(
警报(你好);
},5000);
};
如果您想向这个函数添加回调,它通常会。
复制代码代码如下所示:
无功showmsg =函数(回调){
setTimeout(){()函数(
警报(你好);
在这里添加回调
回调();
},5000);
};
如果容易。JS的承诺时,添加回调方法将更加优雅,但原有的功能需要被封装为保证审。
复制代码代码如下所示:
无功showmsg =函数(){()
允诺实例结构
新承诺();
setTimeout(){()函数(
警报(你好);
要更改承诺的状态
promise.resolve('done);
},5000);
返回承诺实例
回报承诺;
};
一个通用的功能封装成一个承诺的实例,有3个关键步骤,第一步是在一个承诺实例构建内部函数,第二步是部署执行的函数改变承诺的国家已经完成,第三步是回报承诺实例。每个实例有3个州的承诺,目前正等待(未完成),解决(完成,成功),拒绝(拒绝、失败),下面来看看如何添加回调。
复制代码代码如下所示:
showmsg()。然后(功能(STR){
在这里添加回调
回调(STR);
});
这彻底地将回调函数与原始异步函数分开,并且从代码组织中获得了许多优雅。
Ajax请求,easy.js直接封装了Ajax方法为保证对象,可直接添加到方法然后回调。
复制代码代码如下所示:
e.ajax({
网址:'test1 PHP的,
类型:' '
})
然后(函数(){())
添加回调请求成功
}函数(){()
请求失败。
});
接下来的方法接受2个函数作为参数,第一个函数是完成的回调函数,第二个函数是失败回调函数。
如果上面提到了多个Ajax请求呢我们将使用时间。这个方法可以接受多个承诺实例作为参数。
复制代码代码如下所示:
VaR的请求= E.when(e.ajax({)
网址:'test1 PHP的,
类型:' '
E.ajax({ }),
网址:'test2 PHP的,
类型:' '
});
Requests.then((arg1,arg2){函数
console.log(''成功:+ arg1 { 0 } + 2 { 0 });
}(arg1,arg2,功能){
console.log('failure:+ + arg1 arg2);
});
方法是将多个承诺实例存储到数组中。在数组的所有承诺实例完成之前,完成的回调将被执行。实例被拒绝后,将立即执行被拒绝的回调。
承诺模式之一是CommonJS规范。许多主流的Javascript库,有相应的实现,如jQuery,Dojo,已暂缓执行这些功能。这里仍然是Tucao的jQuery递延下,离开其内部使用,这应该是最低的用户模块,这是其更复杂的使用方法有关的。