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';
}
}
我想db.readTransaction的tx.executeSql()內的可變收集要返回時,我調用函數find()會像
OB.Dal.find(OB.Model.OutletSection, null, null, null, null)
感謝您的回覆,其實我試圖得到結果,類似var result = OB.Dal.find(OB.Model.OutletSection,null,null,null,null); –
根據'find'函數的實現方式,你不能。你的回報是函數內部(tr,result)......這是函數內部(tx)。你不能以這種方式捕獲返回的值。這些方法是爲了以異步方式使用而構建的。您必須編寫代碼來替換我的'alert':var result = collection; .... ;-) –
好的,Thanx的信息.. :) –