【发布时间】:2017-05-22 03:20:06
【问题描述】:
我正在使用具有异步调用的 nodejs 的 twit 库,并且我制作了这样的函数:
function getUserFromSearch(phrase) {
T.get('search/tweets', { q: phrase+' lang:pt', count: 1 }, function(err, data, response) {
data['statuses'].forEach(function(element) {
var result = "maybe";
say('getting user profile from search for '+phrase, result);
console.log(element);
return element['user']['screen_name'];
}, this);
})
}
因为 T.get() 是异步执行的,所以无论何时执行
var username = getUserFromSearch('banana');
我收到username=undefined,因为退货需要时间。显而易见的解决方案是实现这样的回调:
function getUserFromSearch(phrase, callback) {
T.get('search/tweets', { q: phrase+' lang:pt', count: 1 }, function(err, data, response) {
data['statuses'].forEach(function(element) {
var result = "maybe";
say('getting user profile from search for '+phrase, result);
console.log(element);
callback(element['user']['screen_name']);
}, this);
})
}
但我不认为这是最好的解决方案,因为我需要为此创建一个回调函数。有没有办法像这样传递用户名“指针”:getUserFromSearch('banana', username);,以使函数改变用户名的值?还有更好的方法吗?
【问题讨论】:
标签: javascript node.js asynchronous callback