我不确定我是如何遵循延迟,承诺和$.when()
的工作方式。我已阅读https://api.jquery.com/jquery.when/,但我很好奇是否可以在$.when()
内使用带有ajax调用的函数。
我在文档中看到了这个例子:
$.when( $.ajax( "test.aspx" ) ).then(function( data, textStatus, jqXHR ) {
alert( jqXHR.status ); // Alerts 200
});
这也是一种可接受的方法吗?
$.when( $.ajax( anotherFunction() ) ).done(
//on completion of the ajax call inside "anotherFunction()" do something here.
);
anotherFunction(){$.ajax...do some ajax stuff here.}
我正在查看的具体案例是加载可用仪表板列表,然后在前端填充列表后,从列表中捕获特定仪表板并为其运行加载功能。
我发现它没有破坏并且会运行(可能?)但是我不知道它是否是正确的编码方式,或者它是不是在工作而不是同时破坏。
感谢您对此有任何建议和专业知识!
-Jeff
答案 0 :(得分:0)
[...]如果带有ajax调用的函数可以在$ .when()中使用。
如果您跳过周围的$.ajax
并且函数本身返回$.ajax
- 调用,那么您的示例将有效。如果您传递给$.when
的内容不是延迟(在您的情况下,函数返回undefined),它将立即解决,我认为不是您想要的。此外,当您只有一个Deferred时,$.when
毫无意义。如果您的函数将返回$.ajax
,则可以执行anotherFunction().done(...)
。
我正在查看的具体案例是加载可用仪表板列表,然后在前端填充列表
确实,$.when
背后的想法是:等待多个延迟完成。您可以将它们作为参数传递,例如
let d1 = $.ajax(...);
let d2 = $.ajax(...);
$.when(d1, d2).done(...)
但如果你只有一个ajax电话,你就不会需要$.when
。