[英]Execute recursive function and save the callback
我有以下代碼。 它運行一個簡單的函數,並且需要運行相同的函數。 (遞歸)
var Skit = function(callback) {
validSkit(Math.random(),function(skit,data){
// Ajax callback
if (skit == true) callback(data); // Works if skit is found
else if (skit == false) Skit(callback); // Call Skit again [not working]
});
}(function(skit){
console.log("Valid skit found!");
});
我收到的Skit is undefined!
我知道我可以執行此真正簡單的function Skit()..
調用。 但這不是我的要求。 這可能嗎?
您應該在此處使用命名函數表達式 :
(function Skit(callback) {
validSkit(Math.random(),function(skit,data){
// Ajax callback
if (skit == true) callback(data); // Works if skit is found
else if (skit == false) Skit(callback); // Call Skit again [not working]
});
})(function(skit){
console.log("Valid skit found!");
});
請注意, Skit
名稱不會在外部范圍內泄漏,並且可以在堆棧跟蹤中用於調試。
在這種情況下,var Skit
變量是返回值。
(function (callback) {
...
})(function () {console.log('I am argument function')});
如果從中返回smth(在validSkit執行之后,例如或之前,無論如何),則Skit的值為返回值。 只要沒有return語句,默認情況下它將返回undefined。
因此,您首先需要在不調用函數的情況下啟動函數,然后按其名稱進行調用:
var Skit = function(callback) {
validSkit(Math.random(),function(skit,data){
// Ajax callback
if (skit == true) callback(data); // Works if skit is found
else if (skit == false) Skit(callback); // Call Skit again [not working]
});
};
Skit(function(skit){
console.log("Valid skit found!");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.