再次调用时,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.entryFormeddataLoaded都是延迟的或者是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包括$ .when重新运行但没有成功。 我不明白这可能会失败,因为$ .when()的两个参数都已解决。 有人有线索吗?