Tag: .when

再次调用时,jquery $ .when()失败

我在函数entryLaunch中有一些代码,当我在窗口中加载或重新显示某些表单元素时,它会运行: function entryLaunch() { console.log(‘About to when in entryLaunch – entryFormed state: ‘.concat(window.entryFormed.state(), ‘ dataLoaded state: ‘, dataLoaded.state())); $.when(window.entryFormed, dataLoaded).done(function() { console.log(‘Setting entry fields next’); }); } 现在window.entryFormed和dataLoaded都是延迟的或者是promise,并且代码在第一次运行时运行,即当元素加载到窗口时,我得到’Setting entry fields next’输出到控制台。 但是,隐藏元素后,当我再次显示它们并重新运行entryLaunch() ,尽管deferred / promises都返回’resolved’状态(控制台输出: “About to when in entryLaunch – entryFormed state: resolved dataLoaded state: resolved” ),所以很明显他们都应该有资格,我没有得到’Setting entry fields next’输出到控制台。 控制台中不会显示任何错误。 可悲的是,我无法在jsfiddle中重现这一点。 我试过这里: function包括$ […]

执行一个接一个的function

所有这些函数都在main函数中,该函数在jQuery异步AJAX成功事件之后调用,并且每秒运行一次。 三个函数中的每一个也调用其中的特定函数。 这是我的基本javascript代码: function mainFunction() { function selectView(){ // do stuff } function startWidgets(){ // do stuff } function popData(){ // do stuff } $.when(selectView()).then(startWidgets).then(popData); } function ajaxCall(){ ajaxRequest = $.ajax({ type: “GET”, url: “”, data: {}, async: true, cache: false, timeout:50000, success: function(data){ mainFunction(); setTimeout( ajaxCall, 5000 ); }, error: function() { // error […]

JQuery deferred.done立即执行预定义函数,但不在内部声明函数

我的问题很奇怪,正如标题中所描述的那样。 这是代码: 情况1: var first = $.ajax({ // about 500ms request url: myUrl success: function() { console.log(1); } }); var second = $.ajax({ // about 200 ms request url: myUrl success: function() { console.log(2); } }); $.when(first, second).done(function() { console.log(3); }); 记录2,1,3。一切都很好,就是我想要的。 案例2: var first = $.ajax({ // about 500ms request url: myUrl success: function() […]

jQuery。当多个ajax请求时,响应顺序

根据这篇文章: https : //stackoverflow.com/a/17548609/985704 使用jQuery.when执行多个同时的ajax请求。 var requests = Array(); requests.push($.get(‘responsePage.php?data=foo’)); requests.push($.get(‘responsePage.php?data=bar’)); var defer = $.when.apply($, requests); defer.done(function(){ // This is executed only after every ajax request has been completed $.each(arguments, function(index, responseData){ // “responseData” will contain an array of response information for each specific request }); }); 完成所有请求后,我能确定($ .each)的参数与请求的顺序相同吗? 这是在某处记录的吗? 如果我不能确定,你推荐什么?

如何判断多个函数何时完成jQuery延迟

我有3个函数处理从AJAX中提取的数据,它们在调用ajax函数后更新页面。 当调用AJAX函数时,我显示了一个加载器,我希望在AJAX完成并且函数完成后隐藏加载器。 我怎样才能使用deferred with when然后在jQuery中测试所有3个函数完成后。 这是我的AJAX代码,此时隐藏了AJAX成功的加载器,理想情况下,这将是在3个function完成/成功之后。 3个函数接收要处理和显示在页面上的数据,它们不是AJAX函数。 function setUpStocking() { $.ajax({ url: url, cache: false, beforeSend: function(){ // Show loader $(‘.loader’).show(); }, success: function(data){ updateMyList(data.gifts); updateRecievedGift(data.recieved); updateGiftsOpenedToday(data.opened); // Hide loader $(‘.loader’).hide(); } }); } 这些函数在AJAX函数之外: function updateMyList(gifts) { // Get data, process it and add it to page } function updateRecievedGift(recieved) { // Get data, […]

$。当不等待Ajax请求完成时

我想首先使用Backbone.js呈现一个视图,该视图显示从服务器中提取的文章。 然后,我想将此标记为“已见”,并将未看到的消息计数返回给路由器,因为它需要可供其他视图使用。 所以在我的路由器中,我有: getArticle: function (id) { require([“app/models/article”, “app/views/Article”], function (models, Article) { var article = new models.Article({id: id}); article.fetch({ success: function (data) { var articleView = new Article({model: data, message_count:that.message_count}); slider.slidePage(articleView.$el); $.when(articleView.saveView()).done(function(data){ console.log(‘in when and data is ‘); console.log(data); }); }, error: function(){ console.log(‘failed to fecth artcie’); } }); }); }, 文章视图中的saveView()是: saveView: function(){ […]