我正在学习 promises。
app.get('/message',function(req, res){
var promise = new Promise(function(resolve, reject){
resolve("hi");
});
promise.then(function(message){
res.json(message);
})
});
这很好用。
虽然这太简单了。为了写一些“冗长”的东西,我将代码移出 app.get()
并尝试从外部函数返回消息......像这样:
app.get('/message',function(req, res){
var message = message(); // I also tried wrapping this in promise and calling `res.json` in `promise.then()` but no luck
res.json(message);
});
function message(){
var promise = new Promise(function(resolve, reject){
resolve("hi");
});
promise.then(function(message){
return message;
})
}
那么为什么 message()
函数中的 return 语句不返回消息呢?将此类有前途的
代码从我的路由函数中移出的最佳做法是什么?
最佳答案
首先,您有一个名为 message
的局部变量,它屏蔽了具有相同名称并引用函数的模块级变量。您需要重命名其中一个。
然后:message
函数没有返回语句,因此它返回 undefined
。
如果你想在传递给 get
的回调函数中得到 promise 的结果,那么你需要:
- 兑现 promise
- 在其上调用
然后
- 在传递给
then
的函数中使用res.json(...);
例如:
app.get('/message',function(req, res){
var my_message = message();
my_message.then(function (data) {
res.json(data);
});
});
function message(){
var promise = new Promise(function(resolve, reject){
resolve("hi");
});
return promise;
}
关于javascript - 为什么这个 Javascript promise 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49177520/