JavaScript - Promise - 然后

JavaScript - Promises - then

提问人:Aditya Shinde 提问时间:7/28/2023 最后编辑:evolutionxboxAditya Shinde 更新时间:7/28/2023 访问量:37

问:

我正在尝试学习 JavaScript 中 promise 的概念,它将使用 promise 将 cdn 链接加载到 link 标签中,并相应地返回 resolve 或 reject 回调。

let loadURL = (href) => {
  return new Promise((resolve, reject) => {
    let newLink = document.createElement('link');
    newLink.href = href;
    document.body.appendChild(newLink);
    newLink.onload = () => {
      resolve(1);
    }
    newLink.onerror = () => {
      reject(0);
    }
  })
}

let p1 = loadURL("https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css");
p1.then((value) => {
  console.log(value);
}).catch((error) => {
  console.log("There is an Error " + error);
})

Screenshot of console panel

但是在我的代码中,loadURL 函数必须返回一个解析回调,它应该执行 then 部分并打印函数返回的值。但事实并非如此,在我的控制台面板中,我看不到“then”和“catch”部分被执行。请帮忙。

帮助我执行代码的“然后”部分:(

JavaScript Promise 回调

评论

0赞 evolutionxbox 7/28/2023
请注意,拒绝 promise 不会调用 ,而是进入 。developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/......catchthen
0赞 evolutionxbox 7/28/2023
另外,我不认为链接元素可以进入?body
1赞 Quentin 7/28/2023
@evolutionxbox — 拒绝承诺不会进入 or .这些是用于绑定事件侦听器以进行 promise 解析或拒绝的方法。虽然您可以按照您链接到的示例,使用第二个参数注册拒绝回调 ,但您也可以像这个问题一样使用。thencatchthencatch

答:

2赞 Quentin 7/28/2023 #1

仅具有属性的元素不会加载任何内容linkhref

回调不会运行,因为 promise 永远不会解析,因为事件永远不会触发,因为你没有构造一个将加载任何内容的回调。thenloadlink

样式表仅在包含 时加载。linkrel="stylesheet"

评论

0赞 Aditya Shinde 7/28/2023
''' newLink.rel= “样式表”;'''我添加了这一行,它起作用了。感谢您的贡献:)