Reputation: 465
I need to know how to make a function wait for a callback from another function before executing. Below is a simplified scenario of what I am trying to accomplish.
function a(){
b();
// Wait for function c to callback
var callback = function();
// then continue function a() logic...
}
function b(){
c();
return false;
}
function c(){
//trigger callback in function a
callback();
}
Upvotes: 0
Views: 490
Reputation: 388446
What you need to do is to pass a callback to b
and c
as shown below and call the callback in c
after its execution... assuming c
is doing an async operation.
function a() {
snippet.log('inside a');
b(function() {
//code that should be executed after `c` must be here... note that you cannot return a value from here to the caller of `a`
snippet.log('inside callback');
});
snippet.log('after b')
}
function b(callback) {
snippet.log('inside b');
c(callback);
return false;
}
function c(callback) {
snippet.log('inside c');
setTimeout(function() {
snippet.log('inside async timeout');
//trigger callback in function a
callback();
}, 100);
}
a();
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
Upvotes: 1
Reputation: 2785
Put the rest of a's logic into the callback, and if you need, use a reference to a's this
function a(){
b();
var that = this;
var callback = function(){
that.variables
// then continue function a() logic...
}
}
function b(){
c();
return false;
}
function c(){
//trigger callback in function a
callback();
}
Upvotes: 1