这个问题旨在解决令人头脑 NumPy 的循环,该循环包含依赖于先前 ajax 调用的 ajax 调用。
循环这些的最佳且有效的方法是什么?任何术语都很棒。
考虑这个例子:
elements : {
'make' : obj,
'model': obj,
'trim' : obj
}
values : {
'model': 'a4',
'trim' : 'base'
}
methods.updateElements(elements['make'], function(){
methods.updateElements(elements['model'], function(){
// Set previous element's value.
elements['model'].val(values['model']);
methods.updateElements(elements['trim'], function(){
elements['trim'].val(values['trim']);
});
});
});
如您所见,之前的方法打破了 DRY 经验法则。
哪里methods.updateElements(element, callback)
方法包含一个简单的getJson
请求将带有值数组的 json 转换为 select element
上的选项列表并调用callback
一旦完成。
methods.updateElements(el, callback){
// get the value of el
// Get an ajax request with an array of different models
// Append each item in the array as an option in the el
callback();
}
如上所示,elements['model']
取决于前一个元素的值,该值是单独的,直到获取其余其他相关数据为止。
现在,这个特定的代码很短,但很快就会变得困惑,如elements
和values
物体的长度变得更长。
我们可以创建什么方法来防止 methods.updateElements
如何避免变得太长?
最佳答案
当您阅读有关 Promise 的内容时,我建议您查看 jQuery 自己的 $.Deferred 实现。 .
这些将为您提供一种方法来跟踪并发异步请求,或设置请求链,以便它们仅在一组特定的先前请求或操作完成后才会发生。
如果您想深入研究该主题,您还应该查看有关延续的文档: http://en.wikipedia.org/wiki/Continuation
关于javascript - Js 中具有多个依赖 Ajax 调用的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001302/