9 Promise
(1)接受一个函数,函数用于存放异步请求代码。函数有两个参数,一个resolve表示请求成功,一个reject表示请求失败。
let p =new Promise(function (resolve, reject) {
$.ajax({
url:'',
dataType:'json',
success(arr) {
resolve(arr);
},
error(err) {
reject(err);
}
});
});
p.then(function (arr) {
// success action
},function (err) {
// more than one error action
});
(2)同时调用多个promise的方式:
Promise.all([ p1, p2 ]).then(function(arr) { let [res1, res2] = arr }, function() {});
(3)高版本的jquery的ajax默认返回一个promise对象
(4)Promise.race([])发送多个请求,谁先返回就使用哪个,其他的不再关注
10 Generator
可以暂停函数执行,函数名前加一个*
function *show() { alert(); yield; alert(); }
如果let obj = show(); 那么,obj就是一个生成器对象 obj.next();程序才会向下执行
11 yield
既可以传入参数又可以获得返回结果
obj.next()方法可以传入参数,传入的参数给yield
第一次调用next方法时,传入的参数无效
function *show() {
// action a
yield 12;
// action b
return 55;
}
let obj = show();
let a = obj.next(); // a = {value: 12, done: false}
let b = obj.next(); // b = {value: 55, done: true}