2015-10-26 29 views
6

Có lẽ tôi đã hiểu sai lỗi bắt buộc với async/await được cho là hoạt động như thế nào từ các bài viết như thế này https://jakearchibald.com/2014/es7-async-functions/ và điều này http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html, nhưng khối catch của tôi không bắt được 400/500.try..catch không bắt được lỗi đồng bộ/chờ đợi

async() => { 
    let response 
    try { 
    let response = await fetch('not-a-real-url') 
    } 
    catch (err) { 
    // not jumping in here. 
    console.log(err) 
    } 
}() 

example on codepen if it helps

+0

AFAK sự lấy api không considter 400/500 lỗi – VeXii

Trả lời

14

400/500 không phải là một lỗi, đó là một câu trả lời. Bạn chỉ nhận được một ngoại lệ (từ chối) khi có sự cố mạng.

Khi máy chủ trả lời, bạn phải kiểm tra xem nó good hay không:

try { 
    let response = await fetch('not-a-real-url') 
    if (!response.ok) // or check for response.status 
     throw new Error(response.statusText); 
    let body = await response.text(); // or .json() or whatever 
    // process body 
} catch (err) { 
    console.log(err) 
}