0
我有一個Winjs承諾返回數組的問題,我不知道我的代碼有什麼問題。當我創造一個承諾,並做.done或。然後我的諾言什麼都不做。WinJS返回承諾數組
代碼:
function getSth(array) {
return new WinJS.Promise(function() {
var dbPath = Windows.Storage.ApplicationData.current.localFolder.path + '\\_db.sqlite';
var i = 0;
SQLite3JS.openAsync(dbPath)
.then(function (db) {
console.log('DB opened');
return db.eachAsync('SELECT * FROM sthh;', function (row) {
array[i++] = row.sth;
console.log('Get a ' + row.sth);
});
})
.then(function (db) {
console.log('close the db');
db.close();
}).then(function() {
return array;
});
return array;
})
}
而在其他文件中我只是做這樣的事情:
var array = [];
var z = getSth(array).then(function() {
console.log("AAA");
for (var i = 0; i < array.length; console.log("#" + array[i]), i++);
});
我會爲任何建議非常gratefull。
嗯,這不是你如何創建一個承諾。 'new WinJS.Promise'的函數參數有三個參數,傳統上命名爲'c','e'和'p'。當你產生結果時你可以調用'c(result)'。 –