このプログラムは、特定のキー&の値を検索するネストされたオブジェクトを読み取っています。このデータが見つかると、データを返送するコールバックを開始する必要があります。オブジェクトは、次のようになります。可変スコープとコールバックの悲惨
{
"name": "joel",
"title": "CTO",
"edu": {
"school": "RMB",
"college": "GNK",
"pg": "CDAC",
"extract": "This is a large text ..."
}
}
をここに私は、私が理解することはできませんよ、同期プログラミングの背景から来て、私は、コールバックを開始しても、変数がスコープ内にあることを保証しなければならないとき
function parseData(str, callback) {
function recursiveFunction(obj) {
var keysArray = Object.keys(obj);
for (var i = 0; i < keysArray.length; i++) {
var key = keysArray[i];
var value = obj[key];
if (value === Object(value)) {
recursiveFunction(value);
}
else {
if (key == 'title') {
var title = value;
}
if (key == 'extract') {
var extract = value.replace(/(\r\n|\n|\r)/gm," ");
callback(null, JSON.stringify({title: title, text: extract}));
}
}
}
}
recursiveFunction(str, callback(null, JSON.stringify({title: title, text: extract})));
};
たときに、このコードが実行されてエラーが発生する
/parseData.js:29
recursiveFunction(str, callback(null, JSON.stringify({title: title, text: extract})));
^
ReferenceError: title is not defined
それはあなたの入力オブジェクトおよび所望の結果を見ることなく、この質問に答えることは非常に困難です。今のところ立っているように、この機能はあまり意味がありません。"ジョエル"、 "タイトル": "CTO"、 "EDU":{ "学校": "人民元"、 "大学" JSONデータ@Tomalak – Tomalak
この { "名前" のようになります"GNK"、 "PG": "CDAC"、 "抽出物": "これは大きなテキスト..." }} 及び所望の結果が { "タイトル" になります " CTO "、 "抽出 ":"これは大きなテキストです... " } –
希望の動作/結果は何ですか?関数が何をすべきかを指定していませんでした。また、以下のように@Svabaelが述べているように、これまでは非同期プログラミングとは関係がありませんでした。 – Tomalak