Ram*_*eek 1 javascript asynchronous node.js promise
我正在学习承诺.
app.get('/message',function(req, res){
var promise = new Promise(function(resolve, reject){
resolve("hi");
});
promise.then(function(message){
res.json(message);
})
});
Run Code Online (Sandbox Code Playgroud)
这很好用.虽然这太简单了.为了写"冗长"的东西,我把代码移出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;
})
}
Run Code Online (Sandbox Code Playgroud)
那么为什么函数中的return语句不message()返回消息呢?什么是将这些promising代码移出路线功能的最佳做法?
首先,您有一个名为local的变量message,它掩盖了具有相同名称并引用函数的模块级变量.您需要重命名其中一个.
然后:你没有message函数的return语句,所以它返回undefined.
如果你想在你传递的回调函数中得到承诺的结果,get那么你需要:
then给它res.json(...);在您传递给的函数内使用then例如:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |