Angular 等待 sqlite 插入中的承诺
Angular wait for promise in sqlite insert
我需要在数据库中插入 x 行。这是我的代码:
dataFactory.insertData = function (responseData)
{
var q = $q.defer();
var rows = 0;
$.each(responseData, function (index, value)
{
var query = "insert or ignore into ...";
$cordovaSQLite.execute(db, query).then(function (res)
{
rows += 1;
}, function (err)
{
console.error(err);
});
});
q.resolve(rows);
return q.promise;
};
如何在调用 resolve 之前等待所有插入完成?我相信 q.promise 会在插入所有行之前得到解决。
试试下面的代码
dataFactory.insertData = function (responseData)
{
var q = $q.defer();
var rows = 0;
var howManyRecordProcessed =0;
$.each(responseData, function (index, value)
{
//... prepare data...
$cordovaSQLite.execute(db, query).then(function (res)
{
//response after db save
howManyRecordProcessed++; //increment variable
if(howManyRecordProcessed === responseData.length)
{
//resolve here
q.resolve(rows);
}
rows += 1;
}, function (err)
{
//if some error occured.
howManyRecordProcessed++;
console.error(err);
});
});
q.resolve(rows);
return q.promise;
};
或 可能会将数据库保存逻辑移动到另一个将 return 承诺全部保存的逻辑。
我需要在数据库中插入 x 行。这是我的代码:
dataFactory.insertData = function (responseData)
{
var q = $q.defer();
var rows = 0;
$.each(responseData, function (index, value)
{
var query = "insert or ignore into ...";
$cordovaSQLite.execute(db, query).then(function (res)
{
rows += 1;
}, function (err)
{
console.error(err);
});
});
q.resolve(rows);
return q.promise;
};
如何在调用 resolve 之前等待所有插入完成?我相信 q.promise 会在插入所有行之前得到解决。
试试下面的代码
dataFactory.insertData = function (responseData)
{
var q = $q.defer();
var rows = 0;
var howManyRecordProcessed =0;
$.each(responseData, function (index, value)
{
//... prepare data...
$cordovaSQLite.execute(db, query).then(function (res)
{
//response after db save
howManyRecordProcessed++; //increment variable
if(howManyRecordProcessed === responseData.length)
{
//resolve here
q.resolve(rows);
}
rows += 1;
}, function (err)
{
//if some error occured.
howManyRecordProcessed++;
console.error(err);
});
});
q.resolve(rows);
return q.promise;
};
或 可能会将数据库保存逻辑移动到另一个将 return 承诺全部保存的逻辑。