gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:01:18 24 4
gpt4 key购买 nike

我是 javascript 的初学者,但在传递函数之类的问题上仍然遇到困难。我需要在回调中设置某个值,然后在该函数完成执行后返回它。然而,这个函数似乎永远不会在到达 return 语句之前执行。这是一个简化的示例:

function otherfunction(somefunction) {}

function foo() {
var bar = 'random value';

otherfunction(function() {
bar = 'correct value';
});
return bar;
}

console.log(foo());

这是jsfiddle .

最佳答案

TL;DR;你不能。

<小时/>

当函数签名接受一个函数时,它尖叫该函数是异步的,并在完成后将该函数作为回调调用。

在这种情况下,otherfunction 将是异步函数,一旦 otherfunctionsomefunction 将作为回调执行code> 已完成执行。

现在,您无法从同步函数 (foo) 返回异步函数 (otherfunction) 的结果。相反,您可以在调用 foo 中的 otherfunction 后延迟代码的执行,以在回调中执行 ( demo );

function foo() {
otherfunction(function() {
var bar = 'correct value';

console.log(bar);
});
}

现在我明白您可能想要对 otherfunction 的结果做不同的事情;并不总是console.log它;您可以通过将 foo 修改为接受回调来解决此问题;

function foo(callback) {
otherfunction(function() {
var bar = 'correct value';

callback(bar);
});
}

然后您可以将其称为 ( demo );

foo(function (newBar) {
console.log(newBar);
});

foo(function (newBar) {
// do whatever with newBar
});

关于javascript - 异步回调完成后返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com