4
新手問題。爲什麼這個JavaScript函數返回undefined?node/redis中的JavaScript控制流:從回調中返回?
var redis = require("redis"), client = redis.createClient();
function generatePageUrl() {
var randomStr = randomInt.toString(32);
// Check whether this URL is already in our database;
client.smembers("url:" + randomStr, function (err, data) {
if (data.length != 0) {
// URL already in use, try again
return getPageUrl();
}
return randomStr;
});
}
var page_url = generatePageUrl();
// add it to the database, etc
我猜它一定是到結束並返回它達到client.smembers
內部之前。
但是我真的需要在返回之前檢查Redis集的內容:我可以從回調中返回它嗎?如果不是,我該怎麼辦?
此外,在我用這個函數遞歸會受到歡迎的方式建議 - 我不知道它是完全合理的:)
感謝您的幫助了新人。
哎呀,忘了一個下劃線, 修復。 – thejh
我用了第一個答案 - 謝謝。逐漸讓我的頭在這個東西! – Richard