我有我需要清除$
開始的屬性的JSON對象。下面就給出這樣的結構應擺脫$aaa
,$bbb
,$ccc
和$eee
:爲什麼我的帶Promises的遞歸Javascript函數失敗
{
$aaa: "$aaa",
bbb: "bbb",
$ccc: {
$ccc2: "$ccc2",
ccc2a: "ccc2a"
},
ddd: {
$ddd: "$ddd2",
ddd2a: "ddd2a"
},
$eee: "$eee",
fff: "fff"
}
我也想讓它異步運行和使用的承諾。無論如何,我都會遇到麻煩。它無法清除$eee
,我不知道我錯了哪裏。下面是完整的代碼和:
function clean$(obj1) {
var obj = obj1;
return new Promise(function(res, rej) {
setTimeout(function() {
for (var i in obj) {
if (obj.hasOwnProperty(i)) {
if (i.match(/^\$/)) {
console.log("delete this " + i);
delete obj[i];
} else if (typeof obj[i] === "object") return clean$(obj[i]);
}
}
res();
}, 1000);
})
}
sample = {
$aaa: "$aaa",
bbb: "bbb",
$ccc: {
$ccc2: "$ccc2",
ccc2a: "ccc2a"
},
ddd: {
$ddd: "$ddd2",
ddd2a: "ddd2a"
},
$eee: "$eee",
fff: "fff"
}
clean$(sample).then(function(res) {
console.log("why it never gets here???");
})
返回一個'的setTimeout裏的任何東西()'絕對沒有。它只是回到定時器引擎的內部。 – jfriend00