Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有javascript承诺的多个onload事件_Javascript_Promise - Fatal编程技术网

具有javascript承诺的多个onload事件

具有javascript承诺的多个onload事件,javascript,promise,Javascript,Promise,我正在尝试将多个承诺链接到Promise.all([…])中,并在onload回调中激活每个承诺。我的代码: var-stylesheetpromissions=[] //样式版本 for(iframe.contentWindow.document.querySelectorAll(“link[rel=stylesheet]”)的变量链接){ //var linkPromise=新承诺((解析)=>resolve()) var linkPromise=()=>新承诺((解析)=>resolve(

我正在尝试将多个承诺链接到
Promise.all([…])
中,并在
onload
回调中激活每个承诺。我的代码:

var-stylesheetpromissions=[]
//样式版本
for(iframe.contentWindow.document.querySelectorAll(“link[rel=stylesheet]”)的变量链接){
//var linkPromise=新承诺((解析)=>resolve())
var linkPromise=()=>新承诺((解析)=>resolve())
样式表Promises.push(linkPromise)
link.onload=函数(){
console.log('加载了样式表')
//链接承诺()
}
link.href=link.href.replace(/\?.*$/,“?v=4”)
}
所有(样式表承诺)。然后((值)=>{
console.log('加载了所有样式表')
});
上面的代码将样式表的版本附加到iframe中,并确定何时将所有样式表加载到
Promise.all

我的代码中的问题是
Promise.all
正在激活,而没有在onload事件回调中调用
linkPromise()
。将在“已加载样式表”之前记录“已加载所有样式表”


如何正确链接承诺并在
onload
事件中激活它们,并使用
Promise.all
回调来确定何时解决所有承诺?

您可以尝试以下方法:

iframe.contentWindow.document.queryselectoral(“link[rel=stylesheet]”)。forEach(link=>{
//更改为arrow函数以修复闭包范围问题
link.href=link.href.replace(/\?.*$/,“?v=4”);
样式表承诺。推送(新承诺((解决,拒绝)=>{
//仅在加载样式表时解析承诺
link.addEventListener('load',resolve)
}));
}

为什么
承诺。所有的
调用任何东西?它需要承诺数组。而不是返回承诺的函数数组。啊,我错过了@VLAZ