我有一个带有Struts 2的JSP包括:
<div id="data">
<s:include value="list.jsp"/>
</div>
list.jsp里面有一个迭代器。
使用JavaScript我有3个函数可以对不同的操作和Web服务进行Ajax调用,但是3个函数刷新了相同的Java对象列表:
function firstCall(product) {
// an ajax call
.done(function(html) {
$("#data").append(html);
});
}
function secondCall(product) {
// an ajax call
.done(function(html) {
$("#data").append(html);
});
}
function thirdCall(product) {
// an ajax call
.done(function(html) {
$("#data").append(html);
});
}
我还有另一个迭代字符串数组的函数:
function iterate(productos){
for(i=0;i<productos.length;i++){
firstCall(productos[i]);
secondCall(productos[i]);
thirdCall(productos[i]);
}
}
我的问题是我需要这三种方法是异步的,因为每种方法需要10秒钟。 =(
有更好的方法吗?
答案 0 :(得分:0)
如果您不关心旧浏览器(谁不支持ES6),您可以使用promises。 它会成为
new Promise(firstCall(productos[i]));
new Promise(seccondCall(productos[i]));
new Promise(thirdCall(productos[i]));
//You can add .then(function(){"code"}) to do something after it's done.
您的方法应该有两个新参数:resolve和reject,它们是解析或拒绝promise的函数。那么。然后工作。
如果您关心旧浏览器,可以使用其他实施https://www.promisejs.org/或查看is there a way to implement promises in ie9+
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise以获取参考资料