如何在同一模块中调用函数?

我试图让我的头围绕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 / deferreds,因为这是链接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 }); } } } 

使用promises的简要示例(未经测试):

 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 }); } } }); 

尝试使用这样的。