2011-12-04 177 views
0

我正在嘗試製作一個JavaScript遊戲,並使用WebSQL存儲遊戲數據。我已經創建了我自己的數據庫選擇函數來格式化查詢結果,然後返回它們。Web SQL遊戲 - 將額外參數傳遞給匿名函數

在這個特定的實例中,我將返回的對象傳遞給結果函數。我想也傳遞兩個其他變量,但我不斷收到這個錯誤「Uncaught ReferenceError:planetInfo沒有定義」。如果任何人可以幫助它會非常感激。先進的謝謝你。我也嘗試使用「selectRowPlanets('query',outcome(shipInfo,arrivalNumber));」,但仍然沒有運氣。

/** db.js **/ 
function selectRowPlanets(query, callBack){ // <-- extra param 
    var result = []; 
    db.transaction(function (tx) { 
    tx.executeSql(query, [], function(tx, rs){ 
     for(var i=0; i<rs.rows.length; i++) { 
     var row = rs.rows.item(i); 
      result[i] = { id:   row['id'], 
         name:  row['name'], 
         owner:  row['owner'], 
         colum:  row['colum'], 
         row:   row['row'], 
         ships:  row['ships'], 
         production: row['production'], 
         percent:  row['percent'] 
     } 
     } 
     callBack(result); // <-- new bit here 
    }, errorHandler); 
    }); 
} 


/** function.js **/ 
function selectDestination(shipInfo, arrivalNumber) { 
    selectRowPlanets('SELECT * FROM planets', outcomes(planetInfo, shipInfo, arrivalNumber)); 
} 

function outcomes(planetInfo, shipInfo, arrivalNumber){ 
     console.log(arguments); 
} 

回答

1

當你運行該代碼:

selectRowPlanets('query', outcomes(shipInfo, arrivalNumber)); 

輸出outcomes(shipInfo, arrivalNumber)的回調,而不是實際的函數傳遞。

做一個匿名函數封裝調用代碼:

selectRowPlanets('query', function() { outcomes(shipInfo, arrivalNumber) }); 
相關問題