如何在同一模块中调用函数
How to call a function within the same module?
为了整理我的应用程序,我正努力了解RequireJS。
我有几个模块,还有一个main.js脚本。
在我的main.js中,我定义了一个包含一些AJAX函数的模块,用于进行基本的API调用。
在这个"API"模块中,我首先调用其中一个AJAX函数,该函数完成后,需要在同一个"API"模块中调用不同的AJAX函数(由于这些是异步任务,我认为这样链接它们没问题?!)。
但是,仅仅在同一个模块中调用函数名是行不通的。
那么,如何在同一模块中调用函数呢?
以下是我的"API"模块的设置:
define(function() {
return {
ajaxCall_A: function() {
$.ajax({
// settings
}).done(function() {
// now call ajaxCall_B
ajaxCall_B(); // doesn't work!
});
},
ajaxCall_B: function() {
$.ajax({
// settings
}).done(function() {
// finished
});
}
}
}
以下将对本地对象的引用添加到ajaxCall_a的更改将解决此问题,但您最好查看JQuery promises/deferres,因为这是链接Ajax调用的更好方法。
define(function() {
return {
ajaxCall_A: function() {
var self = this;
$.ajax({
// settings
}).done(function() {
// now call ajaxCall_B
self.ajaxCall_B(); // doesn't work!
});
},
ajaxCall_B: function() {
$.ajax({
// settings
}).done(function() {
// finished
});
}
}
}
使用承诺的简要示例(未经测试):
define(function() {
return {
ajaxCall: function() {
$.when(this.ajaxCall_A())
.then(this.ajaxCall_B())
.done(function() {
// finished
});
},
ajaxCall_A: function() {
return $.ajax({
// settings
});
},
ajaxCall_B: function() {
return $.ajax({
// settings
})
}
}
}
(function (define) {
return {
ajaxCall_A: function () {
$.ajax({
// settings
}).done(function () {
// now call ajaxCall_B
define.ajaxCall_B(); // it works now!
});
},
ajaxCall_B: function () {
$.ajax({
// settings
}).done(function () {
// finished
});
}
}
});
试着这样使用。
相关文章:
- 如何从模块链中调用函数.导出到节点中
- 调用函数内部的函数
- 在javascript中调用c函数
- DropDownListFor赢得't在更改时调用函数
- Javascript页面调用函数
- 在动画结束之前调用函数
- 允许父窗口在其不同域的子iframe上调用函数
- 运行Infinite Scroll后调用函数时出现问题
- JavaScript:在调用函数的文本输入上按enter键
- 使用大括号和不使用bracs调用函数的区别
- javascript在事件上调用函数
- 从index.html调用函数,该函数无限循环
- 从带参数的字符串变量调用函数中的函数
- 为什么 JS 不在滚动时调用函数
- 是否可以在不更改上下文的情况下调用函数.apply
- 如何在ES6类中使用参数调用函数
- AngularJS:调用函数时编号不更新
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 在JavaScript中调用函数时自定义此选项
- 调用函数中声明的变量