在 promisified ExpressJs 函数中抛出错误
Thrown error in promisified ExpressJs function
我不太确定我理解错误是如何在 promises 中处理的(而且我对 promises 还很陌生,所以我可能不会充分利用它们)。
我有以下代码:
app.listenAsync = Promise.promisify(app.listen);
app.listenAsync(config.port)
.then(function done() {
console.log("We're listening!");
})
.catch(function (err) {
console.log("Abort abort!");
});
出于我不太明白的原因,我的 catch()
从未被调用,即使 app.listenAsync 抛出错误,例如 EADDRINUSE。为什么?
编辑:
我只是注意到如果我这样做
var listenAsync = Promise.promisify(app.listen);
listenAsync(config.port)
.then(function done() {
console.log("We're listening!");
})
.catch(function (err) {
console.log("Abort abort!");
});
几乎给出了正确的行为。 listenAsync 抛出错误(这次在 catch
语句中捕获)Possibly unhandled TypeError: listener must be a function
。我错过了什么吗?
这与 promises 无关,它只是基本的 javascript:您调用 listen 就好像它是一个函数,但它是 app
的方法。
部分选项:
Promise.promisifyAll(app);
// Note how it's called as a method on app
app.listenAsync(...).then(....)
或者
// Bind the function as a method of app
var appListenAsync = Promise.promisify(app.listen, app);
appListenAsync(...).then(....)
我不太确定我理解错误是如何在 promises 中处理的(而且我对 promises 还很陌生,所以我可能不会充分利用它们)。
我有以下代码:
app.listenAsync = Promise.promisify(app.listen);
app.listenAsync(config.port)
.then(function done() {
console.log("We're listening!");
})
.catch(function (err) {
console.log("Abort abort!");
});
出于我不太明白的原因,我的 catch()
从未被调用,即使 app.listenAsync 抛出错误,例如 EADDRINUSE。为什么?
编辑: 我只是注意到如果我这样做
var listenAsync = Promise.promisify(app.listen);
listenAsync(config.port)
.then(function done() {
console.log("We're listening!");
})
.catch(function (err) {
console.log("Abort abort!");
});
几乎给出了正确的行为。 listenAsync 抛出错误(这次在 catch
语句中捕获)Possibly unhandled TypeError: listener must be a function
。我错过了什么吗?
这与 promises 无关,它只是基本的 javascript:您调用 listen 就好像它是一个函数,但它是 app
的方法。
部分选项:
Promise.promisifyAll(app);
// Note how it's called as a method on app
app.listenAsync(...).then(....)
或者
// Bind the function as a method of app
var appListenAsync = Promise.promisify(app.listen, app);
appListenAsync(...).then(....)