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