我正在使用网络抓取应用程序。
我试图在 NodeJS 中发出get请求以获取路由,我在app.get Route中编写了一些异步代码,但得到了unhandledPromiseRejection error
。
我在 app.get 中声明了回调函数,以便可以异步获取响应。
我使用了异步等待语法,如下所示,这可能是错误的。任何帮助表示赞赏!
app.get('/', async (req,res) => {
let USERNAME = req.query.search_name;
const BASE_URL = `https://instagram.com/${USERNAME}`;
let response = await request(BASE_URL);
});
请求未成功显示unhandledPromiseRejection
错误
答案 0 :(得分:1)
通过async/await
,您可以像这样使用try/catch
:
通常,async/await
的错误处理是通过try/catch
完成的,例如:
async function someFunc() {
try {
// get resolved value
const result = await getSomethingFromPromise();
} catch (e) {
// handle error rejected from a promise
console.error(e)
}
}
如 TJ Crowder 所述(以及强调(:)),最好将尝试捕获包裹在整个身体上,也可以在同一块中使用多次等待。
app.get('/', async (req,res) => {
try {
let USERNAME = req.query.search_name;
// multiple await
// const result = await someOtherPromise();
const BASE_URL = `https://instagram.com/${USERNAME}`;
let response = await request(BASE_URL);
} catch (e) {
console.error(e);
}
});
答案 1 :(得分:-1)
因为您没有捕获错误。
app.get('/', async (req,res) => {
let USERNAME = req.query.search_name;
const BASE_URL = `https://instagram.com/${USERNAME}`;
try {
let response = await request(BASE_URL);
} catch (e) {
console.error(e);
}
});
确保在try catch块中获得了异步/等待。
了解更多: https://alligator.io/js/async-functions/
https://hackernoon.com/understanding-async-await-in-javascript-1d81bb079b2c