0
Как я могу получить обратный объект из следующей функции JavaScript -Как вернуть значение вложенной функции
function find(model, whereClause, success, error, args) {
var tableName = model.prototype.tableName,
propertyMap = model.prototype.propertyMap,
sql = 'SELECT * FROM ' + tableName,
params = null,
appendWhere = true,
firstParam = true,
k, v;
if (db) {
// websql
if (whereClause && whereClause._whereClause) {
whereClause.sql = ' ' + whereClause._whereClause;
} else {
whereClause = getWhereClause(whereClause, propertyMap);
}
sql = sql + whereClause.sql;
params = whereClause.params;
if (model.prototype.propertyMap._idx) {
sql = sql + ' ORDER BY _idx ';
}
if (model.prototype.dataLimit) {
sql = sql + ' LIMIT ' + model.prototype.dataLimit;
}
db.readTransaction(function (tx) {
tx.executeSql(sql, params, function (tr, result) {
var i, collectionType = OB.Collection[model.prototype.modelName + 'List'] || Backbone.Collection,
collection = new collectionType(),
len = result.rows.length;
if (len === 0) {
success(collection, args);
} else {
for (i = 0; i < len; i++) {
collection.add(transform(model, result.rows.item(i)));
}
if(success){
success(collection, args);
} else {
return collection
}
}
}, error);
});
} else {
// localStorage
throw 'Not implemented';
}
}
Я хочу переменную коллекции в tx.executeSql() из db.readTransaction чтобы вернуться, когда я вызвать функцию Find() как
OB.Dal.find(OB.Model.OutletSection, null, null, null, null)
Спасибо за ваш ответ, на самом деле я пытаюсь получить результат, что-то вроде var result = OB.Dal.find (OB.Model.OutletSection, null, null, null, null); –
В соответствии с тем, как реализована функция «Найти», вы не можете. Ваше возвращение внутри функции (tr, result) ... внутри функции (tx). Вы не можете поймать возвращаемое значение таким образом. Эти методы построены для использования асинхронным способом. Вы должны написать свой код, заменив мое «предупреждение»: var result = collection; .... ;-) –
Хорошо, Thanx для информации .. :) –