关于将函数创建到函数中,我有某种错误概念,在此对您有所帮助。
假设我必须多次应用jquery $ .post函数,所以我不想重复自己,所以我创建了类似的东西。
myLoadFunction(url, function) {
$.post(url, function( data ) {
//something generic
})
.done(function(data) {
//what I want to put on my caller function
})
.fail(function(data) {
//something generic
});
}
所以我可以这样执行它:
myLoadFunction("myurlblabla", function() {
//everything I need into the .done
});
有任何想法吗?我什至不确定这是否可行,所以请不要杀死我:)
问候!
您想要实现的结构已经为您提供:
你要:
myLoadFunction("myurlblabla", function() {..if success...});
但是您已经在:
myLoadFunction("myurlblabla").done(...) // nicer right ?
使用延迟对象,它已经提供了以下功能:
更改结构以返回延迟的obj:(或者最好查看我的编辑)
myLoadFunction(url)
{
return $.post(url, function(data) {
//something generic
});
}
var R = myLoadFunction("myurlblabla");
R.done(function (){ do whatever}); // here is your actual question.
R.fail(function (){ do whatever});
也不要混合责任!
myLoadFunction应该不再加载。
结果,load
您可以在此负载工厂功能之外执行其他操作。
不要把逻辑放在那
关于您的评论:
但是在这一点上,我可以允许为失败和一般负载保留相同的答案吗?我只是不想重复失败的情况,也不想重复数据为空的情况
您可以设置一个函数(一次),每次将引用:(不要将其放在全局范围内。包含这些函数的对象会很棒)。
function myGENERICCallback(){ something I don't want to repeat}
function mydoneCallback(){ something I don't want to repeat}
function myfailCallback(){ something I don't want to repeat}
function myAlwaysCallback(){ something I don't want to repeat}
现在-您可以执行以下操作:
var R = myLoadFunction("myurlblabla");
R.done(mydoneCallback);
R.fail(myfailCallback);
因此,您的load
函数将如下所示:
myLoadFunction(url)
{
return $.post(url, myGENERICCallback);
}
myGENERICCallback
将永远被称为本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句