2017-09-26 72 views
0

以下是我尝试实现什么样的基本示例。我有这个在铬/ FF工作,但IE拒绝打好。在承诺回调窗口加载没有触发

somePromiseThatFetchesData.then((data)=>{ 

    $(document).ready(function(){ 
     var markup = functionThatGeneratesMarkup(data); 
     $('body').html(markup); 
    }); 

    $(window).on('load', function(){ 
     alert('all images etc from promise loaded finishes loading') 
    }); 

}); 

,我的目标是填充我的DOM与所取得的数据,然后等到我生成的数据资产已经发射另一个功能之前加载。这个问题在我的回调alert永远不会在IE

进出口使用的es6-promise填充工具为IE

+1

您使用的是transpiler? IE不支持箭头功能。控制台中是否有错误? – JLRishe

+0

您是否认为您可能在加载事件发生后将“load”事件附加到窗口? – JLRishe

+0

是的,我使用babel,箭头功能似乎不是问题。我的IE控制台中有几个CORS警告,但是数据加载得很好。 – Samuel

回答

1

您没有使用一个很好的策略解雇。如果load事件在附加事件处理程序之前已经触发,则处理程序将永远不会执行。

相反,附加的事件马上,然后里面有他们自己的诺言处理程序:

$(document).ready(function(){ 
    somePromiseThatFetchesData.then((data)=>{ 
     var markup = functionThatGeneratesMarkup(data); 
     $('body').html(markup); 
    }); 
}); 

$(window).on('load', function(){ 
    somePromiseThatFetchesData.then((data)=>{ 
     alert('all images etc from promise loaded finishes loading') 
    }); 
}); 
+0

谢谢,但我没有使用这种方法提出额外请求吗? – Samuel

+0

如果'somePromiseThatFetchesData'实际上是一个变量,而不是一些代表返回承诺的代码的替代品,那么不会,那么就不会有额外的请求。如果它是一个替身,那么只需在该代码的其余部分之前添加它:'var somePromiseThatFetchesData = codeThatCreatesThePromiseThatFetchesData();' – JLRishe