如何使用本机 JavaScript 承诺执行延迟模式
How do I do a deferred pattern with native javascript promises?
我正在做一个不使用jquery的项目。所有支持的浏览器都具有原生承诺。
我想复制jquery通过$提供的延迟模式。递 延
//Example
var deferred1 = new $.Deferred();
var deferred2 = new $.Deferred();
$.get(someUrl, function(){
...
deferred1.resolve()
})
$.get(someUrl, function(){
...
deferred2.resolve()
})
$.when(deferred1, deferred2).then(function(){//do stuff})
我怎样才能用本地承诺来做到这一点?
请尝试以下操作:
function get(url) {
//Make and return new promise, it takes a callback:
//A function that will be passed other functions via the arguments resolve and reject
return new Promise((resolve, reject) => {
var request = new XMLHttpRequest();
request.addEventListener("load", () => {
//Success ! we need to resolve the promise by calling resolve.
resolve(request.responseText);
});
request.addEventListener("error", () => {
//Error! we need to reject the promise by calling reject .
reject(request.statusCode);
});
//Perform the request
request.open('GET', url);
request.send();
});
};
var urls = [
'https://httpbin.org/ip',
'https://httpbin.org/user-agent'
];
//Create an array of promises
// is equivalent to
//var promises = []; for(var i in urls) promises.push(get(url[i]));
var promises = urls.map(get);
//The Promise.all(iterable) method returns a promise that resolves when
//all of the promises in the iterable argument have resolved,
//or rejects with the reason of the first passed promise that rejects.
Promise.all(promises).then(function (responses) {
console.log(responses);
});
演示:https://jsfiddle.net/iRbouh/52xxjhwu/
相关文章:
- 延迟代码执行,直到下载完成
- 如何在Javascript中延迟for循环执行
- 延迟加载 脚本加载和/或执行
- jquery .each 循环来执行每个数组项,它们之间有延迟
- 如何在 JS 中调用 2 次或更多次时延迟函数执行
- jQuery/Javascript 延迟函数的执行,直到多个函数完成
- 在延迟对象解析后执行启用函数
- 在javascript中执行回发之前延迟
- Jquery延迟脚本的执行
- 如何延迟javascript函数的执行
- jQuery 在 for 循环中执行延迟
- 停止在javascript中执行延迟的实时图形绘图
- 如何将脚本块的执行延迟到加载外部脚本之后
- Javascript代码执行延迟
- 执行延迟函数在等待时所依赖的代码
- setTimeout(functon(){//do stuff},0)"为它所包含的函数造成极小的执行延迟
- 如何在事件循环之外执行延迟javascript,类似于gwt的DeferredCommand
- 将执行延迟设置为窗口调整大小功能
- 为什么document.write of script标记有时间滞后?以及脚本标记执行延迟的原因
- 如何使用本机 JavaScript 承诺执行延迟模式