在自定义dojo模块中的xhr请求后调用兄弟方法
Calling sibling method after xhr request in custom dojo amd module
我有一个自定义模块的dojo的amd,将是这样的:
define(
"my/moduleName",
[//dependencies],
function(xhr) {
return {
method1: function() {
xhr.get({
url: "myurl",
load: function(data) {
//handle data
this.method2(data) //< THIS CAUSES ERROR: 'this.method2 is not a function'
}
});
},
method2: function(data) {
//process data
}
}
}
我怀疑我的问题是xhr.get
创建了一个延迟的对象,而method2
没有在该对象中定义,而是在"my/module"对象上定义。
xhr
完成后,method1
如何呼叫method2
?
您需要存储当前this
上下文,因为一旦您进入load
函数上下文,this
就是xhr对象。
一个常见的约定是var that = this;
,然后根据需要在任何其他闭包中使用that
。
在调用之前存储this
,类似于:
define(
"my/moduleName", [ //dependencies],
function (xhr) {
return {
method1: function () {
var that = this; //<-- store this context
xhr.get({
url: "myurl",
load: function (data) {
//handle data
that.method2(data); //<-- use that , the stored context
}
});
},
method2: function (data) {
//process data
}
}
}
DEMO -存储this
以便以后在另一个闭包中使用
相关文章:
- node.js请求数据事件未在CORS ajax调用中触发
- BrowserId登录请求在文档加载时被调用
- 成功回调永远不会被JSONP请求调用
- Ajax调用返回当前html页面,而不是请求的文件
- 当在文档中拖动mouseup/mouseleve时,我想调用我的Ajax请求
- AJAX 请求调用以错误结尾
- 使用get/put/delete方法从ajax请求调用laravel-controler
- 使用 json 从 ajax 请求调用的文件中获取值
- 在 chai 测试中未由请求调用回调
- Sencha Touch Ajax 请求调用了两次
- 在摩卡中使用请求调用测试函数
- Node.js依赖的API请求调用使用async.waterfall,并将JSON响应与undercore.extend
- 如何通过点击HTML按钮通过POST请求调用JSON
- 如何路由到post请求中的页面,post请求本身是通过XHR请求调用的
- 通过Ajax请求调用页面时出现JavaScript错误
- 如何循环请求-承诺API请求调用
- Ajax调用防止大量请求调用
- 对主干保存请求调用成功回调
- 节点express请求调用内部get
- 在通过post请求调用的文件中执行javascript