const express = require('express');
require('dotenv').config();
var Twit = require('twit');
const app = express();
app.use(express.urlencoded({extended: true}));
app.set('view engine', 'ejs');
app.listen(4000);
let api_key = process.env.api_key;
let api_secret = process.env.api_secret;
let access_token = process.env.access_token;
let access_token_secret = process.env.access_token_secret;
var T = new Twit({
consumer_key: api_key,
consumer_secret: api_secret,
access_token: access_token,
access_token_secret: access_token_secret,
timeout_ms: 60*1000,
strictSSL: true,
});
app.post('/displayTweet', (req, res) => {
let handleName = req.body.handle;
let params = {screen_name: handleName, count:10};
T.get('statuses/user_timeline', params, function(err, tweets, res){
if(!err){
return tweets;
}
else{
console.log(err);
}
})
res.redirect('displayTweet', {tweets});
});
app.get('/', (req, res) => {
res.render('index');
});
app.get('/displayTweet', (req, res) => {
res.render('displayTweet');
});
app.use((req, res) => {
res.status(404).render('404');
});
In the above code, I have written a line that returns a particular value that comes from an external source (Twitter API). The problem is that the outer function wouldn't wait for the inner function to be completed. so that it can use the returned variable. How to fix this issue?
Outer function
app.post('/displayTweet', (req, res) => {
let handleName = req.body.handle;
let params = {screen_name: handleName, count:10};
-----inner function-----
res.redirect('displayTweet', {tweets});
});
inner function
T.get('statuses/user_timeline', params, function(err, tweets, res){
if(!err){
return tweets;
}
else{
console.log(err);
}
})