javascript に散在する WEBSql からデータを設定および取得するメソッドがあります。jayData を使用してデータをフェッチする「get」関数を次に示します。
function getProductRow(key){
console.debug("Product key.. " + key);
$data("Product")
.query("it.Key == productKey", { productKey: key})
.then(function(items) {
items.forEach(function(item) {
console.debug("item.value.. " + item.Value);
return item.Value;
});
});
}
そして、さまざまな場所から呼び出され、メソッドを呼び出す js メソッドを次に示しますgetProductRow
。
function getProdValue(key) {
console.debug("called getProdValue with " + key);
var value = getProdRow(key);
var prod = $.parseJSON(value);
// do stuff with prod
}
コンソールに表示されるログは次のとおりです。
called getProdValue with abc111
Product key.. abc111
Uncaught SyntaxError: Unexpected token u
item.value.. // some stringified valid json string
明らかに、jaydata の非同期の性質により、コントロールはitem.Value
取得される前に呼び出し元の関数に返され、「未定義」を解析すると構文エラーが発生します。が返されたときにのみ制御が呼び出し元の関数に戻るように、呼び出し全体を同期させるにはどうすればよいitem.Value
ですか?