2016-03-02 36 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以了解有关自执行功能的更多信息。

相关问题