Promise.js with AJAX
来源:互联网 发布:吴智辉摇杆店铺 淘宝 编辑:程序博客网 时间:2024/04/29 09:49
使用
Promise.timeout(f1(), 2000).then(f2, function () {
alert("timeout");
}).wait(5000).then(f3);
function f1() {
var promise = Promise();
setTimeout(function () {
console.log(1);
promise.resolve("from f1");
}, 1500)
return promise;
}
function f2() {
var promise = Promise();
setTimeout(function () {
console.log(2);
promise.resolve();
}, 1500)
return promise;
}
function f3() {
var promise = Promise();
setTimeout(function () {
console.log(3);
promise.resolve();
}, 1500)
return promise;
}
AJAX
function xhr(options) {
var promise = Promise(),
req = new XMLHttpRequest();
req.open(options.method || 'GET', options.url, true);
// Set request headers if provided.
Object.keys(options.headers || {}).forEach(function (key) {
req.setRequestHeader(key, options.headers[key]);
});
req.onreadystatechange = function (e) {
if (req.readyState !== 4) {
return;
}
if ([200, 304].indexOf(req.status) === -1) {
promise.reject('Server responded with a status of ' + req.status);
} else {
promise.resolve(e.target.result);
}
};
req.send(options.data || void 0);
return promise;
}
使用:
xhr({ url: "xxx.php?a=xxx" }).then(function (msg) {
})
当然,promise支持等待N个AJAX都完成之后进行回掉:
Promise(xhr({ url: "a.php?c=xxx" }), xhr({ url: "b.php?d=xxx" })).then(function () {
})
上面的写法的Promise.when的缺省形式。
Promise.timeout with AJAX
这里需要思考的是:timeout是属于AJAX还是属于Promise?
如果属于AJAX,那么就有下面这种形式:
xxx.ajax("xxx.php", {
method: "GET",
data: null,
onSuccess: function () { },
onTimeout: function () { },
timeout: 30000
});
如果属于Promise:
Promise.timeout(xhr({ url: "xxx.php" }), 30000).then(
function () { },
function () { }
)
0 0
- Promise.js with AJAX
- ajax&promise
- JS Promise
- js promise
- promise.js
- Promise+ajax && async+await+promise+ajax
- ajax 、jsonp 、Promise 封装
- Promise,Ajax,fetch
- promise中调用ajax
- 手写promise版本ajax
- 封装ajax和Promise
- promise wrap ajax
- Promise封装ajax请求
- js-Promise A+规范
- promise - common js
- js Promise学习
- Node,js 中的Promise
- react.js-12-promise
- Hiberate SQL方言
- 9月26号工作总结
- 简单的callback
- poj 3233 Matrix Power Series
- nfs服务器搭建 ubuntu 14.04.5
- Promise.js with AJAX
- JAVA.实例变量和局部变量
- Android Activity全面解析
- ListView 软键盘与item底部对齐
- 2016.9.26测试解题报告(KFC)--二进制+组合数
- poj 2528 Y2K Accounting Bug
- python3,pyCharm2016环境下Django框架搭建与初步使用
- Category 的一些事
- c++中map和pair