1 理论概念
1.1 背景
在前端开发过程中,使用异步编程方式,避免不了使用回调函数(callback), 多嵌套的callback函数将导致代码阅读性差,不利于后期维护。 甚至有个形象名称“回调地狱”。为了解决该问题,提出了 Promise 解决方案。
1.2 回调地狱
当业务逻辑复杂的时候,回调的嵌套过多,代码复杂度增加,可读性降低,维护起来也复杂,调试也复杂,这就是回调地狱。
asyncFunc1(opt, (...args1) => {
asyncFunc2(opt, (...args2) => {
asyncFunc3(opt, (...args3) => {
asyncFunc4(opt, (...args4) => {
// some operation
});
});
});
});
2 实战
2.1 创建 Promise
可以使用 new Promise(function(resolve, reject) {})创建一个 Promise 对象,在业务逻辑中成功时调用 resolve 方法, 失败时调用 reject 方法。
/**
* 异步调用服务
*/
function invokeServiceAsync(beanId, method, params, callback) {
var request = {};
request.beanId = beanId;
request.method = method
request.params = params;
var str = $.toJSON(request);
window.cefQuery({
request : str,
onSuccess : function(response) {
var result = $.parseJSON(response);