首页 文章

grab 承诺

提问于
浏览
-1

在下面的代码中,我试图捕获与无效链接相关的错误 . 但是,我收到以下警告和错误,而不是错误

阻止跨源请求:同源策略不允许在https://aaajsonplaceholder.typicode.com/posts上读取远程资源 . (原因:CORS请求未成功) . 尝试获取资源时出现TypeError:NetworkError . [了解详情]

这是代码

const url = 'https://jsonplaceholder.typicode.com/posts'; // This URL is valid

    async function getPostData(){
        const response = await fetch(url);
        const data = await response.json();

        return data;
    }


    document
    .getElementById('btnGET')
    .addEventListener('click',
    () => {
        getPostData()
        .then( data => console.log(data))
        .catch( () => {throw new Error('Woops! Something went wrong')});
    });

根据我的理解,以下是 getPostData 内发生的事情

[1] HTTP GET请求通过Fetch API发布到先前定义的URL;
[2]数据变量用响应初始化,即解析或拒绝;
[3]承诺归还;

如果URL无效,我希望 EventListener 中的代码触发 cache 但不会发生 . 我做错了什么?

1 回答

  • 1

    如果出现问题, getPostData() 应该 throw 错误,然后在 click 事件的回调中 catch

    const url = 'https://jsonplaceholder.typicode.com/posts'; // This URL is valid
    
    async function getPostData(){
      try{
        const response = await fetch(url);
        const data = await response.json();
    
        return data;
      }
      catch(e){
        throw new Error('Woops! Something went wrong' + e)}
      }
    }
    
    
    document
    .getElementById('btnGET')
    .addEventListener('click',
    () => {
        getPostData()
        .then( data => console.log(data))
        .catch( (err) => { console.log(err)});
    });
    

相关问题