【发布时间】:2016-09-16 08:46:15
【问题描述】:
我是 Datapower 网关脚本(和 Javascript)的新手,以下情况完全让我感到困惑。看:
var inputJson = "default";
//Reading json from input and covert it to string
session.input.readAsJSON( function ( error, json) {
if ( error ) {
session.reject( 'Input is not a valid JSON document' );
return;
}
inputJson = JSON.stringify(json);
console.debug("Inside: ", inputJson);
});
console.debug("Outside ", inputJson);
在 Datapower 控制台中将如下:
“内部:{长json字符串}”
“外部:默认”
这完全打破了我的想法并扭曲了我对变量作用域的了解。是 javascript 的特性,datapower 脚本实现还是什么?
UPD。还有一个脑洞大开的事:
function getFile(options){
var file="default";
urlopen.open(options,function(error, response){
if(error){
console.error("Unable to find file: "+JSON.stringify(error));
}else{
if(response.statusCode==200){
response.readAsBuffer(function(error, responseData){
if(error){
console.error("Unable to open file: "+JSON.stringify(error));
}else{
console.error("Before: ", file);
file=responseData.toString('ascii');
console.error("After: ", file);
}
});
}else{
console.error("Unable to open file: "+response.statusCode);
}
}
});
return file;
}
console.error("Func result: ", getFile(openSchemaOptions));
控制台结果:
“Func 结果:默认”(原文如此!)
“之前:默认”
“后:--json 字符串--”
如何在函数执行之前打印函数结果?!
【问题讨论】:
标签: javascript scope ibm-datapower