- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 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 缺乏了解。需要一些提示,请
最佳答案
Probably method "promise" is undefined.
不,promise
函数似乎已定义。只是它是一个函数,而不是一个 Promise 对象,并且没有 .then
方法。
I am not sure if I use express-promise wrong
是的。据我了解their docs ,它似乎所做的就是让 res.send
、res.json
和 res.render
接受 Promise 或包含 Promise 的对象,这然后递归扩展并等待。
or it's just my lack of knowledge about whole promises.
这也是。我推荐general promise resources作为了解 Promise 的切入点。
首先,您必须promisify您的 Firebase 方法,以便 getObserved
确实返回一个 promise 。 (目前,它似乎失败了,因为您尝试 return
from an async callback )。如果您还没有使用 Promise 库,您可能必须选择一个。
然后,在您的 route 您可以像这样使用它
for (var query in req.query) {
console.log('query: ', query);
switch(query) {
case 'getobserved':
results.observedTags = getObserved(); // a promise
break;
…
}
}
res.json( result ); // here, express-promise does some magic
不需要 var Promise = function() {
行。您也可以废弃 promise.then( res.send( results ), someRejectedMethod );
,因为express-promise 确实会为您处理这个问题。如果您没有使用它,您可以使用类似的方法显式地完成它
var promise = getObserved();
promise.then(function(list) {
res.json({observedTags: list});
}, someRejectedMethod);
关于javascript - 明示 promise 行不通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735882/
我正在尝试实现这个简单的幻灯片:http://codepen.io/rafaelcastrocouto/pen/doZNMo 但我没有成功,我不知道问题是什么,唯一显示的是幻灯片的最后一张图片,我添加
我对 Promise 还很陌生,我认为我没有正确理解它,因为我在代码中尝试它但没有成功。 我在 NodeJS 上有一个服务器,使用 Express 库和 express-promise var exp
为什么两个盒子都在右边,而不是居中对齐? fiddle :http://jsfiddle.net/gh76q/1/ 我尝试将方框 2 的位置更改为相对位置,它可以解决问题,但当鼠标悬停在方框 1 上时
这个问题在这里已经有了答案: scanf() leaves the newline character in the buffer (7 个答案) 关闭 4 年前。 如果我尝试这样的事情: int
这个问题在这里已经有了答案: scanf() leaves the newline character in the buffer (7 个答案) 关闭 4 年前。 如果我尝试这样的事情: int
我有一张我的小 table ,它似乎不起作用。 CSS 会告诉所有我想要的高度和宽度。我这样做的方式有误吗?或者我错过了什么? 为什么不是所有的边界都对齐? 表格、html 和 CSS 可以在这个 j
我正在尝试使用localStorage制作一个简单的程序。我创建了一个按钮来重置 localStorage 中的所有数据。不幸的是,它不起作用,我不知道为什么。 这是我的代码: var sl
我有一个 Div,我想做的是,当您将鼠标悬停在 div 1 上时,它会更改 div 2。 所以我可以通过 .div1:hover .div2 的 CSS 来做到这一点,这意味着当我将鼠标悬停在 1 上
出于某种原因,比较逻辑无法正常工作……它不会比较两个 NSDecimalNumber 对象。有时有效,有时无效。真的很奇怪。 if 语句适用于某些编译,有时则不然。这是正确的做法吗? 数据来自一个 j
我在 iOS 上使用 Phonegap 2.1.0。在我的 main.html 文件中,我使用 jQuery 加载了一些 html。 但是,我正在加载的其中一个 html 文件有自己的 Javascr
行不通,而嵌套
我一般不会嵌套像这样: The following: one two 我将使用 像那样嵌套反而。但是今天我用了但似乎 Emacs 和 Google Chrome 都会考虑外部 一看
我有 3 个框 (div-s)。 main-box里面有两个盒子。第一个 (Box1) 向右浮动,另一个 (Box2) 向左浮动。 两个框的高度都设置为 100%,所以当其中一个拉伸(stretch)
我是一名优秀的程序员,十分优秀!