2015-12-21 15 views
0

我一直在使用SQLiteWinRT库,并且我无法实现(我所知道的)异步操作在JavaScript的bucles中工作的等效性。 这里是一个例子:javascript - 我如何执行await操作,而条件或等价条件呢?

await db.OpenAsync(SQLiteWinRT.SqliteOpenMode.OpenRead); 
var stmt = await db.PrepareStatementAsync(
    "SELECT name FROM sqlite_master WHERE type = 'table'" 
); 
//this is the part 
while (await stmt.StepAsync()) 
{ 
    string table = stmt.GetTextAt(0); 
    this.ViewModel.DatabaseTables.Add(table); 
} 

我希望能够做正确的问题。

回答

0

我自己找到了解决方案。我希望这可以帮助别人

var arr = [];//stmt is IAsyncOperation<Statement> result, that is, Statement instance result; 

stmt.stepAsync().then(function (r) { 
    if (r) { 
     var obj = {}, i = -1; 
     while (++i &lt; stmt.columnCount) { 
      obj[stmt.getColumnName(i)] = stmt.getTextAt(i); 
     } 
     arr.push(obj); 
     stmt.stepAsync().then(arguments.callee); 
    } else { 
     console.log(arr); 
    } 
});