Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 异步回调完成后返回正确的值_Javascript_Asynchronous - Fatal编程技术网

Javascript 异步回调完成后返回正确的值

Javascript 异步回调完成后返回正确的值,javascript,asynchronous,Javascript,Asynchronous,我是javascript的初学者,在传递函数之类的事情上仍然有困难。我需要在回调函数中设置一个特定的值,然后在该函数完成执行后返回该值。但是,在到达return语句之前,该函数似乎从未执行过。以下是一个简化的示例: function-otherfunction(somefunction){ 函数foo(){ 变量条='随机值'; otherfunction(function(){ bar='正确值'; }); 返回杆; } log(foo()); 以下是。TL;博士;你不能 当一个函数签名接

我是javascript的初学者,在传递函数之类的事情上仍然有困难。我需要在回调函数中设置一个特定的值,然后在该函数完成执行后返回该值。但是,在到达return语句之前,该函数似乎从未执行过。以下是一个简化的示例:

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
});