generator出现之前,想要实现对异步队列中任务的流程控制,大概有这么一下几种方式:
回调函数
事件监听
发布/订阅
promise对象
第一种方式想必大家是最常见的,其代码组织方式如下:
function fn(url, callback){ var httpRequest; //创建XHR
httpRequest = window.XMLHttpRequest ? new XMLHttpRequest() :
window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : undefined;
httpRequest.onreadystatechange = function(){ if(httpRequest.readystate === 4 && httpRequest.status === 200){ //状态判断 callback.call(httpRequest.responseXML);
}
};
httpRequest.open("GET", url);
httpRequest.send();
}
fn("text.xml", function(){ //调用函数
console.log(this); //此语句后输出});
console.log("this will run before the above callback."); //此语句先输出
延伸阅读
学习是年轻人改变自己的最好方式
