gpt4 book ai didi

jQuery,同时 ajax 调用和 $.when

转载 作者:行者123 更新时间:2023-12-01 05:42:17 25 4
gpt4 key购买 nike

当使用 $.ajax().done 时,目前,您可以做一些巧妙的事情,例如:

$.getJSON('url').done(myFn);
$.getJSON('url2').done(myFn2);

但是当你使用 $.when 进行相同的 2 个 ajax 调用时,你需要执行一个“奇怪”的事情

$.when($.getJSON('url'), $.getJSON('url2')).done(function(res1, res2) {
myFn(res1[0], res1[1], res1[2]);
myFn2(res2[0], res2[1], res2[2]);
});

有没有办法做这样的事情:

$.when($.getJSON('url'), $.getJSON('url2')).done(myFn, myFn2);

也就是说,当您将多个函数传递给完成时,它们会以相同的顺序针对每个参数进行解析?

编辑:这里有来 self 想要的用例的更多信息:

$.when($.getJSON('tweets'), $.getJSON('users'))
.done(rememberTweets, rememberUsers)
.done(displayTweetsWithUsers)

目前,我这样做:

var tweets, users;
$.when($.getJSON('tweets'), $.getJSON('users'))
.done(function(tweetsRes, usersRes) {
tweets = tweetsRes[0];
users = usersRes[0];
displayTweetsWithUsers();
});

最佳答案

you are required to perform a "strange" thing

不完全是,我认为你的语法很好地表达了你正在做的事情。如果您认为应该有一个简写 - 不,没有,因为您想要做的事情很奇怪(一个不寻常的用例)。

如果您需要此通用版本,请使用

function zipMapper(fns) {
return function() {
var args = arguments;
return fns.map(function(f, i) {
return args[i].length ? f.apply(this, args[i]) : f.call(this, args[i]);
}, this);
};
}

$.when($.getJSON('url'), $.getJSON('url2')).then(zipMapper([myFn, myFn2]);

关于jQuery,同时 ajax 调用和 $.when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026209/

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