2013-07-10 95 views
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) 

回答

1

你應該調用函數找到這樣:

OB.Dal.find(OB.Model.OutletSection, null, function(collection, args){ 

    alert('Collection variable: '+collection); 

}, null, null); 
+0

感謝您的回覆,其實我試圖得到結果,類似var result = OB.Dal.find(OB.Model.OutletSection,null,null,null,null); –

+1

根據'find'函數的實現方式,你不能。你的回報是函數內部(tr,result)......這是函數內部(tx)。你不能以這種方式捕獲返回的值。這些方法是爲了以異步方式使用而構建的。您必須編寫代碼來替換我的'alert':var result = collection; .... ;-) –

+0

好的,Thanx的信息.. :) –