如何将回调函数返回的值赋值给变量?无法从另一个问题中理解。关于异步调用

How to assign the value returned by a callback function to a variable? Couldn't understand from another ques. about asynchronous call

在这里,我使用的是 GoLang 的 Wails。 参考:https://wails.app/

Wails 有助于为简单的 golang 应用程序提供前端。其中它使用 javascript、html 和 css 来呈现 ui 并将前端连接到后端。我对 Javascript 完全陌生。所以,这里有一个简单的 Golang Generate(),它使用 mystore.set("string") 将一些字符串设置到 wails 存储,我认为,在 javascript 端是某种回调函数并使用 mystore.subscribe() 回调该字符串值。 Wails 有一个默认示例。每当任何后端函数生成任何值并使用 mystore.set(abc) 在存储中设置时,它都会获取该存储值并将其设置为 span 元素,如下所示。

HTML:

<span id='logo'></span>

JAVASCRIPT:

mystore.subscribe(function(state) {
    document.getElementById('logo').innerText = state;
});

现在,我想获取该值并将其存储到我的变量中,所以我尝试了这个:

var logoTitle = '';
mystore.subscribe(function(state) {
    logoTitle = state;
});

但是,它没有将该值设置为 var logoTitle。另外,它说 logoTitle 变量已声明但从未使用过。 我该怎么办?

那是因为那是异步代码。 mystore.subscribe 中的回调只会“在某个时候”被调用,因此 logoTitle 暂时不会被设置。您基本上是在告诉 mystore“一旦获得值,就调用该函数”,但您的代码会立即继续执行它之后的语句。

如果您想 运行 代码取决于传递给回调的值,请将该代码(或对它的调用)放入回调中。