gpt4 book ai didi

javascript - jQuery promise 一切

转载 作者:行者123 更新时间:2023-11-30 08:43:19 25 4
gpt4 key购买 nike

这种模式在 jQuery 或 javascript 中是否可行?

$.when(function(){

//I init many plugins here, some of them use ajax etc but I dont really control it
//I only do something like $(div).somePlugin() here
$("div").myPlugin()

}).done(function(){

//and this part I want to be executed when all ajaxes and deferred stuff from when part is done
//however I cannot go to every plugin and add something like deferred.resolve() etc.

});

例如 myPlugin 会有

$.fn.myPlugin = function(){
$(this).load(someUrl);
};

(但我无法将 myPlugin 更改为其一些外部代码。)

基本上我有很多事情正在发生,其中很多都使用了 async。功能。我想在所有这些 async 时执行一些功能。东西已完成,但我无法更改插件代码,因此我无法向其中添加 .resolve() 东西。

最佳答案

是的,这基本上就是 .when 所做的!

// changes body html
var fisrtApi = $.get("http://something/foo").then(function(r){ $("body div").html(r); });
// inits some API for usage
var secondApi = somePromiseReturningFucntion();
// sets a plugin on top of a page
var somePlugin = someOtherPromiseReturningFn();


$.when(firstApi,secondApi,somePlugin).done(function(r1, r2, r3){
// all of them ready, results are the arguments
});

也是pretty straightforward将常规的非 promise 返回 API 转换为 promise 。

例如,让我们做 $(document).ready(function(){

// returns a promise on the document being ready
function whenDocumentReady(){
var d = $.Deferred();
$(document).ready(function(){ d.resolve(); });
return d.promise();
};

哪个会让你做:

$.when($.get("http://yourAPI"), whenDocumentReady()).done(function(apiResult,_){
// access API here, the document is also ready.
});

例如 - 对于 jQuery 推特,该库在完成获取数据时提供回调。你会 promise :

function getTweets(username, limit){
var d = $.Deferred();
$.twitter(username, limit , function(res){ d.resolve(res); });
return d.promise();
}

哪个会让你做:

$.when(getTweets("someusername"),whenDocumentReady()).done(function(tweets){
// document is ready here _and_ the twitter data is available,
// you can access it in the `tweets` parameter
});

关于javascript - jQuery promise 一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244014/

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