检查js.值存在



在JavaScript代码中,我有:

function readAll() {
var objectStore = db.transaction("employee").objectStore("employee");

objectStore.openCursor().onsuccess = function(event) {
var cursor = event.target.result;

if (cursor) {
alert("Name for id " + cursor.key + ", Value: " + cursor.value);
cursor.continue();
} else {
alert("No more entries!");
}
};
}

在我的等效GO代码中,我写道:

var ReadAll js.Func
ReadAll = js.FuncOf(func(this js.Value, args []js.Value) interface{} {
defer ReadAll.Release()
cursor := this.Get("result")
if cursor {
_ = cursor.Get("key")
value := cursor.Get("value")
Window.Call("alert", value)
cursor.Call("continue")
} else {
Window.Call("alert", "No more records")
} 
return nil
})
db.ObjectStore.Call("openCursor").Set("onsuccess", ReadAll)

但在编译时,我得到了:

non-bool cursor (type js.Value) used as if condition

我如何检查相关的js.value是否存在?

javascriptif(cursor)正在检查值是否正确。

您的代码this.Get产生一个js.Value。它不是布尔型的,并且不能在Goif子句中使用它。

syscall/js包有Truthy(),您可以使用它来模拟javascript truthy检查。

https://pkg.go.dev/syscall/js#Value.Truthy

if cursor.Truthy() {
...
}

为了检查一个值是否为假,您可以否定结果:

if !cursor.Truthy() {
...
}

相关内容

  • 没有找到相关文章

最新更新