访问函数范围 js 之外的填充变量
Accessing populated variable outside of function scope js
var JsonObj = {};
if (Titanium.Network.online) {
apiHelper.APIPostRequest(APIURL + '/it', tempJSON, function(e) {
var status = this.status;
if (status == 200) {
JsonObj = JSON.parse(this.responseText);
//behaves as expected
//console.log(JsonObj);
}
}, function(err) {
alert('Unknown error from api');
});
} else {
alert('No internet connection found');
}
console.log(JsonObj);
当我将其打印出函数范围时,它会返回一个空的 json 对象,如果我在函数中执行此操作,它会用相关数据填充它。
我创建了一个非常简单的JS文件,测试范围问题并且可以工作:
var i=5;
if(i>3){
if(i>4)
{
i = 6;
}
}
alert(i);
这很可能与您的函数作用域无关。
在发出请求的最常见情况下,您异步执行,这意味着您的控制台.log在您发出请求后立即执行,您在请求中提供的函数仅在您获得响应时执行......(异步)
因此,当您在底部写出对象时,对象尚未设置。由于回调函数尚未执行。
我非常希望apiHelper.APIPostRequest符合这种模式。但是由于我对任何这些框架都不了解,我不能肯定地说,但是通过它们的方式,您也描述了错误......这是我能看到的唯一明显的东西。
var JsonObj = {};
console.log("Before Async Request: " + JsonObj);
if (Titanium.Network.online) {
apiHelper.APIPostRequest(APIURL + '/it', tempJSON, function(e) {
var status = this.status;
if (status == 200) {
JsonObj = JSON.parse(this.responseText);
console.log("Inside Async Callback: " + JsonObj);
//behaves as expected
//console.log(JsonObj);
}
}, function(err) {
alert('Unknown error from api');
});
} else {
alert('No internet connection found');
}
console.log("After Async Request: " + JsonObj);
你不妨马上开始了解承诺......例如,对于 Q,它应该是这样的:
var deferred = Q.defer(),
JsonObj = deferred.promise;
if (Titanium.Network.online) {
apiHelper.APIPostRequest(APIURL + '/it', tempJSON, function(e) {
var status = this.status;
if (status == 200) {
deferred.resolve(JSON.parse(this.responseText));
}
}, function(err) {
deferred.reject(err);
});
} else {
alert('No internet connection found');
}
JsonObj.then(function(json) {
console.log("After Async Request: " + json);
});
相关文章:
- 如何通过ajax刷新JSF填充的javascript变量
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 使用JSON文件中的变量(字符串)填充文本区域
- 如何使用变量填充iframe源
- JavaScript:如何用变量填充单选按钮值和标签
- 单击按钮时填充javascript变量
- 用 Web 服务结果填充变量
- 当从 for 循环填充变量时如何使用 promise
- 如何在 href 中填充变量
- JavaScript 三元 opretor 根据条件填充变量
- 填充变量时避免先声明变量
- 用后端JSON响应填充变量
- JSON.stringfy(数据)填充变量
- 动态Jquery图形填充变量
- Mustache如何在模板中的花括号内填充变量
- 映射函数而不是填充变量
- 如何使用逻辑运算符填充变量?
- 如何在加载页面后重新填充变量
- 访问函数范围 js 之外的填充变量
- 使用 jQuery 根据下拉列表中的选择填充变量