request('GET', url_ws).done((res) => {
if (res.statusCode==200) {
parseString(res.getBody(),{explicitArray:false}, function (err, result) {
pdfAnnotations=result['root']['element'];
console.log(pdfAnnotations);//show value//second
});
}
});
console.log(pdfAnnotations);//display "undefined"//first
fn_work(pdfAnnotations)
您好,我必须处理从Web服务加载的变量,但是当我的函数启动时,变量是'undefined'
答案 0 :(得分:0)
parseString()
完成后,您需要调用您的函数:
request('GET', url_ws).done(res => {
if (res.statusCode == 200) {
parseString(res.getBody(), { explicitArray: false }, function (err, result) {
const pdfAnnotations = result['root']['element']
doSomething(pdfAnnotations)
})
}
})
答案 1 :(得分:0)
这是正常的,因为代码是异步执行的,它会生成request
然后执行fn_work
,然后从url_ws
获取数据,然后获取数据时,它会移至ParseString
,依此类推,
简单的方法是将fn_work(pdfAnnontaions)
移到ParseString
的回调中,如此
request('GET', url_ws).done((res) => {
if (res.statusCode==200) {
parseString(res.getBody(),{explicitArray:false}, function (err, result) {
pdfAnnotations=result['root']['element'];
fn_work(pdfAnnotations);
});
}
});
我建议使用promises或async/await
,请查看以下内容:
https://blog.risingstack.com/mastering-async-await-in-nodejs/