gpt4 book ai didi

node.js - 在 Node.js 中同步使用另一个文件中的返回值

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:19 25 4
gpt4 key购买 nike

我通过一个辅助文件连接来自已定义用户的推文,并尝试在我的 server.js 中检索它,但 str 值仍然未定义(并且此行首先执行),然后是我的 console.log助手打印出正确的值。

输出:

GET /login/twitter/callback 302 618.242 ms - 0

Concatenated Tweets in Server: undefined

Concatenated Tweets in Helper: Test Tweet 3 #TestTweet Test Tweet 2 Test Tweet 1

任何人都可以帮助我应该使用什么控制流来调用 twitterHelper.getTweets 函数以获取服务器中返回的 str 吗?谢谢!

服务器.js

app.get('/login/twitter/callback', 
passport.authenticate('twitter', {failureRedirect: "/login"},
function(req, res) {
// auth success
async.waterfall ([
function(callback) {
callback(null, twitterHelper.getTweets(user));
},
function(str, callback) {
console.log("Concatenated Tweets in Server: " + str);
callback(null);
}
],
function(err) {
if(err)
console.log("Error: " + err);
}
);
}
)
);

Helper.js

var concatTweets = '';
var promise = new Promise(
function(resolve, reject) {
T.get('statuses/user_timeline', params, function( err, data, response) {
if(err)
reject(err);
else {
for (var i = 0; i < data.length ; i++)
concatTweets = concatTweets + " " + data[i].text;
resolve(concatTweets);
}
})
}
).then(
str => {
console.log("Concatenated Tweets in Helper: " + str);
return str;
}, err => {
console.log(err);
return err;
}
);

最佳答案

您可以通过 promise 使用这种简单的方式,而不是使用这种漫长的方式。

Helper.js

var concatTweets = '';
var getTweets = function(user){
var promise = new Promise(function(resolve, reject) {
T.get('statuses/user_timeline', params, function( err, data, response) {
if(err){
reject(err);
} else {
for (var i = 0; i < data.length ; i++)
concatTweets = concatTweets + " " + data[i].text;
console.log("Concatenated Tweets in Helper: " + concatTweets);
resolve(concatTweets);
}
})
});
return promise;
}

Server.js

app.get('/login/twitter/callback', passport.authenticate('twitter', {failureRedirect: "/login"},function(req, res) { 
// auth success
twitterHelper.getTweets(user).then(str=>{
console.log("Concatenated Tweets in Server: " + str);
}).catch(err=>{
console.log("Error: " + err);
});
}));

我希望这对你有用。

关于node.js - 在 Node.js 中同步使用另一个文件中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com