Try to run fetch after connect. Fetch is faster than connect, and in console I am getting fetch error because it returns result faster than connection done. But in documentation
You will need to not call the callback until the connect()
call completes its asynchronous work. That's the only way that the async library can do its job. Since connect()
is asynchronous, it likely has a callback itself that you can use to know when it is actually done.
Furthermore, you shouldn't need the setTimeout()
calls at all if you use the async library properly.
Conceptually, you would like something like this where the connect()
function calls a passed in callback when it finishes its async operation:
var bets = [];
async.series([
function(callback){
connect(function() {
callback(null, 'one');
});
},
function(callback){
fetch_last_30();
callback(null, 'two');
}
]);
While, I'd would personally find promises a better solution here for sequencing two operations, you could change your connect()
function to this:
function connect(callback){
var url = "https://api....../login";
/* connect to site and get access_token to access other api*/
$.post(
url,
{username: "000", password : "000"},
function(data){
access_token = data["access_token"];
console.log(data["access_token"]);
callback(data);
}
)
}
Here's a version using promises instead of the async library:
function connect(callback){
var url = "https://api....../login";
/* connect to site and get access_token to access other api*/
return $.post(url, {username: "000", password : "000"}).then(function(data){
access_token = data["access_token"];
console.log(data["access_token"]);
return data;
});
}
connect().then(function(data) {
fetch_last_30();
});