gpt4 book ai didi

javascript - 扩展存储在变量中的函数

转载 作者:行者123 更新时间:2023-12-02 17:01:15 24 4
gpt4 key购买 nike

我有一个大型 JavaScript 项目,它进行多个 Ajax Web 服务调用。处理 Web 服务调用的代码来自共享的外部文件。

为了将 Web 服务与调用代码分开,有一个全局对象来引用调用函数,如下所示

var doRemote ={};
$(document).ready(function(){
doRemote =getRemoteEndpoint('https://someplace.org/MyWebService.aspx');
}

getRemoteEndpoint 的简化版本如下:

function getRemoteEndpoint(url) {
return function(methodName, options) {
var extension = {
url: url + '/' + methodName,
data: {},
async: true

};

var combined = $.extend({}, extension, options);
combined.data = JSON.stringify(combined.data);
return $.ajax( combined );
};
}

我通过以下代码调用 Web 服务

doRemote('WebServiceMethodName', 
{
success: function(data) {
alert('Web Service Returned' + data);
},
error: function(req, stat, err) {
alert('Error');
}
});

我需要在仅在我正在处理的页面中执行 getRemoteEndpoint 调用之前执行一个函数。我不想在 30 个 Web 服务调用之前调用该函数,而是向该函数添加一行代码。我尝试用以下内容替换 doRemote 分配。

doRemote =function() {
DoTask();
return getRemoteEndpoint('https://someplace.org/MyWebService.aspx');
};

DoTask 是我正在处理的程序中的一个命名函数。虽然它不会抛出任何错误,但所有 Ajax 调用都不起作用。

我尝试使用JQuery.extend函数,但它也不起作用。

我做错了什么?

最佳答案

您必须实际调用它才能将 getRemoteEndpoint结果分配给 doRemote:

doRemote = (function() {
DoTask();
return getRemoteEndpoint('https://someplace.org/MyWebService.aspx');
})();

更新:

doRemote = (function() {
var oldDoRemote = getRemoteEndpoint('https://someplace.org/MyWebService.aspx');
return function(a1, a2) {
DoTask();
oldDoRemote(a1, a2);
}
})();

关于javascript - 扩展存储在变量中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com