Javascript 异步回调完成后返回正确的值
我是javascript的初学者,在传递函数之类的事情上仍然有困难。我需要在回调函数中设置一个特定的值,然后在该函数完成执行后返回该值。但是,在到达return语句之前,该函数似乎从未执行过。以下是一个简化的示例:Javascript 异步回调完成后返回正确的值,javascript,asynchronous,Javascript,Asynchronous,我是javascript的初学者,在传递函数之类的事情上仍然有困难。我需要在回调函数中设置一个特定的值,然后在该函数完成执行后返回该值。但是,在到达return语句之前,该函数似乎从未执行过。以下是一个简化的示例: function-otherfunction(somefunction){ 函数foo(){ 变量条='随机值'; otherfunction(function(){ bar='正确值'; }); 返回杆; } log(foo()); 以下是。TL;博士;你不能 当一个函数签名接
function-otherfunction(somefunction){
函数foo(){
变量条='随机值';
otherfunction(function(){
bar='正确值';
});
返回杆;
}
log(foo());
以下是。TL;博士;你不能
当一个函数签名接受一个函数时,它会尖叫该函数是异步的,并在函数完成后作为回调调用该函数 在这种情况下,
otherfunction
将是异步函数,somefunction
将在otherfunction
完成执行后作为回调执行
现在,您无法从同步函数(foo
)返回异步函数(otherfunction
)的结果。相反,在调用foo
中的otherfunction
以在回调()中执行后,您会延迟代码的执行
现在我很感激您可能希望对otherfunction
的结果执行不同的操作;不总是console.log
it;您可以通过修改foo
也接受回调来修复此问题
function foo(callback) {
otherfunction(function() {
var bar = 'correct value';
callback(bar);
});
}
然后你会把它叫做()
TL;博士;你不能
当一个函数签名接受一个函数时,它会尖叫该函数是异步的,并在函数完成后作为回调调用该函数 在这种情况下,
otherfunction
将是异步函数,somefunction
将在otherfunction
完成执行后作为回调执行
现在,您无法从同步函数(foo
)返回异步函数(otherfunction
)的结果。相反,在调用foo
中的otherfunction
以在回调()中执行后,您会延迟代码的执行
现在我很感激您可能希望对otherfunction
的结果执行不同的操作;不总是console.log
it;您可以通过修改foo
也接受回调来修复此问题
function foo(callback) {
otherfunction(function() {
var bar = 'correct value';
callback(bar);
});
}
然后你会把它叫做()
您没有在
otherfunction
的内部调用somefunction
。相关:您没有在otherfunction
的内部调用somefunction
。相关:我现在更了解回调的工作原理。但现在我需要在另一个回调中调用'foo',该回调需要返回'foo'返回的数据。这会很棘手,但我想我可以用你给我的信息来解决。谢谢我现在更了解回调的工作原理。但现在我需要在另一个回调中调用'foo',该回调需要返回'foo'返回的数据。这会很棘手,但我想我可以用你给我的信息来解决。谢谢
foo(function (newBar) {
console.log(newBar);
});
foo(function (newBar) {
// do whatever with newBar
});