Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 resolve()执行,但承诺未按预期进行解析_Javascript_Es6 Promise - Fatal编程技术网

Javascript resolve()执行,但承诺未按预期进行解析

Javascript resolve()执行,但承诺未按预期进行解析,javascript,es6-promise,Javascript,Es6 Promise,我有这样的代码:(我把整个代码放在这里是为了不遗漏任何东西) 尽管代码到达了player.SetVar(${cover},true)代码行,我确信执行了resolve(),承诺没有解决,我看不到console.log('after resolving promise as expected!')为什么?它在其他一些情况下工作 注意:代码实际上是等待一个元素(图像)加载,然后解析承诺。可能存在两个问题,第一个问题是,如果图像尚未加载,第一个承诺不会解析,所有后续承诺都会被丢弃;第二个问题是,如果再

我有这样的代码:(我把整个代码放在这里是为了不遗漏任何东西)

尽管代码到达了
player.SetVar(
${cover}
,true)代码行,我确信执行了
resolve()
,承诺没有解决,我看不到
console.log('after resolving promise as expected!')为什么?它在其他一些情况下工作


注意:代码实际上是等待一个元素(图像)加载,然后解析承诺。

可能存在两个问题,第一个问题是,如果图像尚未加载,第一个承诺不会解析,所有后续承诺都会被丢弃;第二个问题是,如果再次调用
coverLoaded
,第一个承诺永远不会解决

这应该如预期的那样起作用:

功能封面已加载(封面){
返回新承诺((解决)=>{
const updateOverload=setInterval(()=>{
const coverSelector=$(`[aria label=“${cover}]”)。查找(“图像”)[0];
if(封面选择器的类型!=“未定义”){
const coverSelectorSource=coverSelector.getAttribute(“xlink:href”);
如果(getCoverWidth(coverSelectorSource)!==0){
clearInterval(更新覆盖);
设置超时(()=>{
SetVar(`${cover}`,true);
setTimeout(()=>player.SetVar(`${cover}`,false),100;
解决();
}, 100);
}
}
}, 25);
});
函数getCoverWidth(src){
常量图像=新图像();
image.src=src;
返回image.naturalWidth;
}
}
//添加SFX以覆盖入口和出口
异步函数反馈覆盖(){
等待承保(“承保B”);
log(“按预期解决承诺后!”);
}

谢谢你的回答。。。今晚我会测试这个。。。在达到预期结果之前,请不要离开我:)
let updateCoverLoaded;

function coverLoaded(cover){
  clearInterval(updateCoverLoaded);  
  updateCoverLoaded = setInterval(() => coverLoaded(cover), 25);
  const coverSelector = $(`[aria-label="${cover}"]`).find("image")[0];
  return new Promise(resolve => { 
    if(typeof coverSelector !== "undefined"){
       const coverSelectorSource = coverSelector.getAttribute("xlink:href");
       if(getCoverWidth(coverSelectorSource) !== 0) {
          clearInterval(updateCoverLoaded);
          setTimeout(() => { 
              player.SetVar(`${cover}`, true);
              setTimeout(() => player.SetVar(`${cover}`, false), 100);
              resolve();
          }, 100); 
       }
    }
  });
  
  function getCoverWidth(src) {
    const image = new Image();
    image.src = src;
    return image.naturalWidth;
  }
}

// Add SFX to cover entrance and exit
async function feedbackCover(){
  await coverLoaded('coverB');
  console.log('after resoving promise as expected!');
}