【发布时间】:2018-04-20 04:28:48
【问题描述】:
为什么 try...catch 不适用于以下示例代码?
const http2 = require("http2")
const url = require("url")
function sendRequest() {
return new Promise((resolve, reject) => {
var r = http2.request({
"host": "www.google.com",
"method": "GET",
"path": "/"
}, (resp) => {
var data = []
resp.on("data", (chunk) => {
throw ("Error")
})
resp.on("end", () => {
console.log("ended")
resolve("finished")
})
resp.on("error", (e) => {
console.log("error")
reject(e)
})
})
r.end()
})
}
async function wrapper(){
try {
console.log("Sending request")
await sendRequest()
console.log("Finished sending Request")
}catch(e){
console.log("error!") // Supposed to see this
console.log(e)
}
console.log("All finished") // Supposed to see this
}
wrapper()
输出如下:
Sending request
/Users/test-user/test.js:15
throw ("Error")
^
Error
Process finished with exit code 1
【问题讨论】:
-
这里的问题不是等待,而是你的承诺......你抛出错误,而不是调用拒绝。
-
为什么
data首先是一个错误?
标签: javascript node.js