# #go
Вопрос:
Я пытаюсь глубоко изучить GO "syscall/js"
и пришел к длинному WebSQL, где у меня есть подпись функции ниже и я хочу воспроизвести ее в GO:
tx.executeSql(SQLstatement, [], successCallback, errorCallback);
Где tx
передается через db
, полный код является:
lt;scriptgt; var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "lt;pgt;Found rows: " len "lt;/pgt;"; document.querySelector('#status').innerHTML = msg; for (i = 0; i lt; len; i ) { msg = "lt;pgt;lt;bgt;" results.rows.item(i).log "lt;/bgt;lt;/pgt;"; document.querySelector('#status').innerHTML = msg; } }, null); }); lt;/scriptgt;
Мой подход был таким, как показано ниже: =gt; Создание gt; js.Global()
для каждой функции, а затем Invoke
для нее, поэтому я попробовал что-то вроде:
package main import "syscall/js" var ( document js.Value ) func init() { document = js.Global().Get("document") } var openDatabase = js.Global().Get("openDatabase") var transaction = js.Global().Get("transaction") var executeSql = js.Global().Get("executeSql") type DB struct{} func (db *DB) Open(file string) { db = openDatabase.Invoke(file, "1.0", "Test DB", 2*1024*1024) } func (db *DB) Query(tx string){ db.transaction.Invoke(function(tx) { db.executeSql.Invoke(tx, [], successCallback, errorCallback); }); } func main() { db := DB.Open('mydb') db.Query('SELECT * FROM LOGS') }
Затем я застрял, так как не мог знать, как управлять Callback
функциями.
Есть какие-нибудь мысли?