私は非同期のjavascript関数の間で変数を共有しています。それらのうちの1つはメインスレッドであり、もう1つはイベントベースです。私はイベントが完了したときに値を返したい。indexedDBからデータを取得し、関数呼び出しに戻り値
これはコードです:のIndexedDBからデータを取得しながら、
completeExecution = false; // Shared Variable (Global Variable)
indexDBdata = {}; // Shared Variable (Global Variable)
function getPermission(key) {
var permission_data={};
if(exist_in_local) {
indexdbConnection.getRecordByKey('userPermission',permitKey,function(data){
indexDBdata=data; // Before its complete function return value
});
} else {
// make ajax call & its working fine
}
return permission_data;
}
//のIndexedDB
getRecordByKey:function(tableName,key,readRecords){
if(isEmptyOrNull(readRecords)){
console.log("callback function should not be empty");
return;
}
if(isEmptyOrNull(tableName)){
console.log("table name should not be empty");
return;
}
var returnObj={};
var isSuccessfull=false;
if(this.dbObject.objectStoreNames.contains(tableName)){
var transaction=this.dbObject.transaction(tableName);
var objectStore = transaction.objectStore(tableName);
objectStore.get(key).onsuccess = function(event) {
returnObj=event.target.result;
};
**//Return object after this events compelte**
transaction.oncomplete = function(evt) {
completeExecution=true;
indexDBdata=returnObj;
readRecords(returnObj);
};
transaction.onerror = function(evt) {
completeExecution=true;
indexDBdata={status:'404'};
readRecords("Table Not found");
};
} else {
completeExecution=true;
indexDBdata={status:'404'};
readRecords("Table Not found");
}
}
からデータを取得問題は、それが常に{}
(空のオブジェクト)を返します。イベントスレッドとメインスレッドを同期させたい、またはイベントが完了するのを待っています。私は値を返さなければならないコールバックでDOMを直接操作したくない。
上記の問題または他のトリックの解決策がある場合は、私を助けてください。
ありがとうございます。
'...あなたが何を代わりにこれをやろうとしているのつまり
、平均? JavaScriptはマルチスレッドではありません。 –