【发布时间】:2015-04-19 21:07:45
【问题描述】:
我对 Promise 很陌生,我认为我没有正确理解它,因为我在我的代码中尝试它没有成功。
我在 NodeJS 上有一个服务器,使用 Express 库和 express-promise
var express = require('express');
var app = express();
app.use(require('express-promise')());
然后我正在处理 ajax 查询:
var promise = function() {
for(var query in req.query ){
console.log( 'query: ', query );
switch( query ){
case 'getobserved':
results.observedTags = getObserved();
break;
...
}
}
};
getObserved 正在从 Firebase DB 获取数据
var getObserved = function() {
var observedTags = dbRef.child('observedTags');
observedTags.on('value', function(snap) {
var allObservedItems = snap.val();
var list = [];
for(var ii in allObservedItems ){
list.push( allObservedItems[ii].name );
}
return list;
});
};
最后我尝试通过以下方式向客户发送响应:
promise.then( res.send( results ), someRejectedMethod );
然后我进入控制台:
TypeError: undefined is not a function
at d:\wamp\www\soz2\server.js:100:13
可能方法“promise”是未定义的。我不确定我是否使用了 express-promise 错误,或者只是我对整个承诺缺乏了解。需要一些提示,请
【问题讨论】:
-
您将
promise定义为一个普通的匿名函数。仅仅因为您将其命名为promise,它就不是一个承诺。因此,then属性未定义。 -
好的我明白了,但是你能给我提示一下吗,我该怎么办?
-
抱歉,我不清楚您要做什么。
-
在我的函数“promise”完成时尝试向用户发送响应;
-
你不需要承诺。在函数结束时,只需调用
res.send()。如果你有简单的逻辑并且想在函数结束时做一些事情,那么 Promise 对你没有任何帮助。
标签: javascript node.js express promise