У меня проблема с возвратом массива в обещании Winjs, и я не знаю, что не так с моим кодом. Когда я создаю обещание и делаю .done или. Then мое обещание ничего не делает.WinJS return in prom array
Код:
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++);
});
Я буду очень благодарен за любые предложения.
Um, что это не так, как вы создаете обещание. Параметр функции для 'new WinJS.Promise' принимает три параметра, традиционно называемых' c', 'e' и' p'. Вы вызываете 'c (result)', когда вы произвели результат. –