function showHint(str){
return new Promise(function(reslove, reject){
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
reslove();
}
}
xmlhttp.open("GET","http://d.alipay.net/xyebzdzr/serivce.htm",true);
xmlhttp.send();
})
}
//两个ajax 连续调用
//showHint().then(showHint).then(function(){console.log(2)});
//进一步封装 个个模块解耦
function showHint(){
return new Promise(function(reslove, reject){
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
reslove(xmlhttp.statusText);
}
}
xmlhttp.open("GET","http://d.alipay.net/xyebzdzr/serivce.htm",true);
xmlhttp.send();
})
}
var request = {
a : function(){
return showHint().then(function(val){return val});
},
b : function(){
return showHint().then(function(val){return val});
}
}
//两个ajax 同时发起请求 但必须满足两个都完成 才触发
function main(){
return Promise.all([request.a(), request.b()]);
}
/*main().then(function(value){
console.log(value);
})*/
//yield 加入战场
var requests = {
a : function(){
return showHint().then(function(val){return val});
},
b : function(){
return showHint().then(function(val){return val});
}
}
function* run(){
yield requests.a();
yield requests.b();
}
function iterator(g){
var it = g();
void function () {
var arg = arguments;
var curr = it.next();
if(curr.done) {
return ;
}
if(curr.value instanceof Promise) {
curr.value.then(function(val){
console.log(val);
arg.callee();
});
} else {
arguments.callee();
}
}();
}
iterator(run)