how to make synchronous call to indexeddb method from javascript
我有一个方法说java脚本中的method1有另一个方法说method2调用。 method2返回method2()调用之后method1中需要的一个值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var userObj={"first": [{'Key':'1', 'value':'student',}, {'Key':'2', 'value':'Teacher',} ], "second":[{'Key':'1', 'class':'theory',}, {'Key':'2', 'value':'lab',} ] }; function method1(){ var dataArray =method2(userObj.first); alert("dataArray size -"+dataArray.length); } function method2(firstData) { var dataArray = new Array(); $.indexedDB("SelfAssessment").objectStore("First_Sheet","readonly").each(function(elem) { dataArray .push(elem.value); }).done(function() { alert("inside first Data"); return dataArray ; }); return dataArray ; } |
在上面的代码中,method2返回我必须在method1中使用的dataArray。 那怎么办?
因为,method2是异步调用所以,我在"在method2内警告"之前得到"第一个警报"。 如何以顺序方式获得此信息?
请帮助
不要
1 2 3 4 5 6 7 | function method2(firstData, completionCallback) { var dataArray = new Array(); $.indexedDB("SelfAssessment").objectStore("First_Sheet","readonly").each(function(elem) { dataArray.push(elem.value); }).done(function() { completionCallback(dataArray) }); } |
并像这样调用它:
1 2 3 4 5 6 7 8 | function method1(){ method2(userObj.first, function(dataArray) { // inside a function that is called by method2 when the value is fetched alert("dataArray size -"+dataArray.length); // do everything with dataArray inside this function }); } |