如何在应用中使用异步响应值.得到的回调
How to use an asynchronous response value in an `app.get` callback
我想使用flickrapi (https://www.npmjs.com/package/flickrapi)包。我需要授权:
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//I need this flickr variable
});
我想在我的express code
中使用这个flickr
变量app.get('/', function (req, res) {
//do something with flickr
});
我该怎么做?
模块化方法:
把你的flickr连接代码分开:
flickr-public.js
var Flickr = require("flickrapi"),
flickrOptions = {
api_key: "API key that you get from Flickr",
secret: "API key secret that you get from Flickr"
};
module.exports = (function(){
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//handle error here
console.log('Flickr Object Obtained');
return flickr;
});
})();
你可以实例化flickr对象,只需在app.js file:注意:最好在app.js文件中实例化flickr对象。这样,当服务器启动时,对象就会立即创建。由于此flickr对象仅用于公共API,不需要一次又一次的身份验证。
require('./flickr-public');
现在只需通过简单地要求它就可以在任何地方访问flickr对象。
routes.js
const flickr = require('../path-to/flickr-public');
app.get('/', function (req, res) {
//use flickr object to perform actions.
});
:
来自node.js文档:
模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用
require('foo')
将得到完全相同的对象返回,如果它将解析到相同的文件。多次调用require('foo')
可能不会导致模块代码被多次执行。
放到get
app.get('/', function (req, res) {
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//do something res.status(200).send('what you want here');
});
});
直接在你的路由回调中使用
app.get('/', function (req, res) {
Flickr.tokenOnly(flickrOptions, function(error, flickr) {
//call someother method to get photos etc. and finally call res.send()
res.send(photos); // where photos is obtained from flickr or anything you can pass which should be response of you request.
});
});
相关文章:
- 如何收集所有发射回调的所有响应
- jQuery post,访问responseType或回调中的响应
- node.js+MySQL;JSON结果-回调问题&没有响应客户端
- 可以't从回调函数内部访问响应
- 回调返回响应,但当在API中发送时,响应在节点JS中显示为空白
- 挂起的回调:在每次回调返回之前返回响应
- Node.JS-如何识别哪个异步HTTPGET响应在回调中返回数据
- 具有一个响应的多个回调-Node JS
- React native:如何将参数传递给手势响应程序回调
- POST 响应未等待回调完成
- Facebook Javascript SDK 响应回调未触发
- GreaseMonkey 和 JQuery AJAX 响应不会以任何形式在回调中幸存下来
- 如何为每个 AJAX 请求/响应事件添加回调
- Jquery $.ajax 获取响应与将“this”对象嵌套传递到“success”回调函数冲突
- E_UNKNOWN beforeCreate 和其他生命周期回调的响应错误
- 使用 jQuery $.ajax 的 JSONP 响应/回调不起作用
- JSON 响应中的回调函数
- 无法访问angularjs中http响应回调函数之外的$scope对象
- AJAX异步响应回调
- 在后台和内容脚本之间通过promise传递一个响应回调