2016-03-02 38 views
0

我的函數從商店中刪除數據,但同時我想保存刪除時間,所以我試圖使用返回兩次是正確的,就像我在函數中寫的或它導致任何問題稍後?謝謝你的幫助是否有可能在JavaScript函數中返回多次

function deleteStudent($indexedDB, student, $scope, studentId, userId) { 
    return $indexedDB.openStore('student', function (store) { 
     student["delete_time"] = new Date().toISOString(); 
     return saveItemInStore(store, student, userId); 

     return store.delete(studentId); 
    }); 
} 
+2

你聽說過「yield」嗎? –

+3

'return'語句立即退出函數,因此不會運行後續的'return'語句。 – Pointy

+0

不,我沒有,我是新來的java腳本 – george

回答

0

這將導致唯一的問題是第二個返回語句永遠不會執行。

也許你可以重新寫return語句是這樣的...

return (saveItemInStore(store, student, userId) && store.delete(studentId)); 

如果兩個語句成功,這將返回「真」。另外,如果「saveItemInStore」失敗,「store.delete」將不會執行。您需要確定這是否適合您的情況。

+0

在這兩種情況下,我和你的商店沒有被執行,也許不存在表達式是相同的,並且第一個返回只能被執行 – george

+0

saveItemInStore函數實際返回什麼?如果store.delete沒有在我建議的代碼中執行,那麼意味着saveItemInStore的返回值被解釋爲false。 – user1751825

+0

這兩個表達式都不相同。在你的第二個陳述永遠不能執行。如果第一個返回「truthy」值,它將執行。 – user1751825

0

對象是量身定做的,可以讓您從一個函數返回多條信息。只需在單個對象上創建所需的屬性並返回該對象即可。當然,調用函數的代碼需要知道這是什麼被返回並相應地使用它。

var desiredInfo = myFunc(); 
 

 
document.write("<p>I learned both to " + desiredInfo.first + " and to " + desiredInfo.second + ".</p>"); 
 

 

 
function myFunc() { 
 

 
    var objToReturn = {}; 
 

 
    var someAdvice = "buy low"; 
 
    objToReturn.first = someAdvice; 
 

 
    var moreAdvice = "sell high"; 
 
    objToReturn.second = moreAdvice; 
 

 
    return objToReturn; 
 

 
}

0

也許類似this適合您的賬單。

function mytestfunc(){ 
    alert("I will be called first") 
    return (function(){ 
    alert("I will be called second"); 
    //saveItemInStore placeholder 
    return (function(){ 
     alert("I will be called third") 
     //store.delete placeholder 
    })(); 
    })(); 
} 

mytestfunc(); 

此外,僅供參考,請查看此計算器question以瞭解有關自執行功能的更多信息。

相關問題