gpt4 book ai didi

javascript - Js 中具有多个依赖 Ajax 调用的循环

转载 作者:行者123 更新时间:2023-11-28 19:59:03 27 4
gpt4 key购买 nike

这个问题旨在解决令人头脑 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']取决于前一个元素的值,该值是单独的,直到获取其余其他相关数据为止。

现在,这个特定的代码很短,但很快就会变得困惑,如elementsvalues物体的长度变得更长。

我们可以创建什么方法来防止 methods.updateElements如何避免变得太长?

最佳答案

当您阅读有关 Promise 的内容时,我建议您查看 jQuery 自己的 $.Deferred 实现。 .

这些将为您提供一种方法来跟踪并发异步请求,或设置请求链,以便它们仅在一组特定的先前请求或操作完成后才会发生。

如果您想深入研究该主题,您还应该查看有关延续的文档: http://en.wikipedia.org/wiki/Continuation

关于javascript - Js 中具有多个依赖 Ajax 调用的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001302/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com