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 of async series is a tool to run second function after first returns result.Settimeouts saves situation, but its not beautifull. How can I wait, when all done without promises?
var bets = [];
async.series([
function(callback){
setTimeout(function(){
connect();
callback(null, 'one');
},1)
},
function(callback){
setTimeout(function(){
fetch_last_30();
callback(null, 'two');
},2000)
}
]);
UPD my connect function
function connect(){
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"]);
}
)
}
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. Sinceconnect()
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:While, I'd would personally find promises a better solution here for sequencing two operations, you could change your
connect()
function to this:Here's a version using promises instead of the async library: