【发布时间】:2017-04-11 18:55:23
【问题描述】:
我正在使用 javascript 和 nodejs 创建项目。我正在基于条件的 for 循环内的函数中集成回调,但无法做到这一点。我的问题是回调在循环的第一次迭代中完成。这是我的代码:
function tagEndpointNames(callback) {
var data = userGenerateToken();
var sql = "SELECT * FROM topology_data WHERE topology_coordinates !='' and topology_uuid is not null"
var query = conn.query(sql, function(err, tagEndpointNames) {
for (var i = 0; i < tagEndpointNames.length; i++) {
var topologytagData = {
"topology_tag": tagEndpointNames[i].topology_uuid
}
var tpCooridinates = JSON.parse(tagEndpointNames[i].topology_coordinates);
for (var j = 0; j < tpCooridinates.stageObjects.length; j++) {
if (tpCooridinates.stageObjects.length) {
if (tpCooridinates.stageObjects[j].endPointId) {
if (isGuid(tpCooridinates.stageObjects[j].endPointId)) {
var endPointUUID = tpCooridinates.stageObjects[j].endPointId;
var _ro = require('request');
var url = url;
var _d = '';
_ro({
url: url,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + data['access_token']
},
json: topologytagData
}, function(_e, _r, _b) {
if (_r.statusCode == 200 && !_e) {
callback()
//return;
} else {
callback()
console.log("andarss")
return;
}
})
}
}
}
}
}
})
}
这里是函数调用:
tagEndpointNames(function(){
console.log ('Server Closed during MIGRATION JOB 4');
server.close(function () {
process.exit(0);
});
})
【问题讨论】:
-
你的代码格式让我在尝试阅读时脑出血
-
我认为你在 if/else 条件下都使用了回调。
-
var url = url;是什么意思? -
url 是请求去的 url 只是临时写入 url
-
请通过 JS lint 运行您的代码并修复行尾缺少的分号。我注意到至少有两个。
标签: javascript node.js