Javascript 返回jQuery延迟
在某种情况下,我不希望使用ajax请求查询服务器,而是希望立即返回一个空数组。 函数的返回类型必须是延迟的。(调用者能够链接Javascript 返回jQuery延迟,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,在某种情况下,我不希望使用ajax请求查询服务器,而是希望立即返回一个空数组。 函数的返回类型必须是延迟的。(调用者能够链接。然后到调用)。 我得出了以下结论: if(noNeedForAjax) { var d = $.Deferred(); d.resolve([]); return d; } return $.when( ... 然而,令人惊讶的是,你不能在一行完成它。我原以为$.Deferred().resolve([])也会这样做,但显然不是这样 为什么不.
。然后
到调用)。
我得出了以下结论:
if(noNeedForAjax) {
var d = $.Deferred();
d.resolve([]);
return d;
}
return $.when( ...
然而,令人惊讶的是,你不能在一行完成它。我原以为$.Deferred().resolve([])
也会这样做,但显然不是这样
为什么不.resolve()
返回此
有可能在一个return语句中实现相同的结果吗?正如Andy所指出的,尝试不使用
return
if(noNeedForAjax) {
var d = new $.Deferred();
d.resolve([]);
d;
};
或者,“一行完成”
希望这有帮助看起来效果不错:文档中说,
resolve
返回一个延迟,所以我希望单行版本能够像Jason p的JSFIDLE中一样工作。不知道你为什么会遇到问题。什么是d代码>应该做什么?@Jason P已解决
延迟
。它可能有助于发布什么是“链接的”,然后发布什么是或可能是“延迟的”需求。谢谢。我知道d
是一个已解决的延迟,但是表达式d代码>实际上什么都不做。@Jason P要求是什么?或者,在解析空数组之后,接下来需要什么?对于预期的和等,需求的下一步是什么?最初的问题提到返回一个空数组,但没有指定如何使用它;至少从最初的问题中似乎无法获得更多。请澄清。谢谢。顺便说一句-你甚至可以做得更短。You's idea有两个$。when,所以我只是将整个内容转换成一个?:
语句:$。when(noNeedForAjax?[]:$.ajax(…)。然后(…)
-when()可以接受一个对象并将其用作返回值。太棒了。
if (noNeedForAjax) {$.when(function() {return []})};