Javascript 如何将变量用作函数?
这是我的密码:Javascript 如何将变量用作函数?,javascript,jquery,ajax,function,Javascript,Jquery,Ajax,Function,这是我的密码: Promise.all([twitter_ajax(), instagram_ajax(), facebook_ajax()]).then(() => { stopBlinking() formSubmited = false; }).catch( (err) => { console.error(err); stopBlinking() formSubmited = false; }) 因为我的项目中有一个设置系统,所以我需
Promise.all([twitter_ajax(), instagram_ajax(), facebook_ajax()]).then(() => {
stopBlinking()
formSubmited = false;
}).catch( (err) => {
console.error(err);
stopBlinking()
formSubmited = false;
})
因为我的项目中有一个设置系统,所以我需要将这三个ajax请求动态化。我的意思是,有时候我需要把它们全部发送出去,有时候我需要把它们都发送出去,或者可能是其中一个。这完全取决于用户配置的设置
你知道我该怎么处理吗
这是我的想法,有语法错误。我将设置存储到cookie中,并可以如下方式访问它:
var functions = getCookie($ajaxRequests);
//=> twitter_ajax(), instagram_ajax(), facebook_ajax()
看到了吗?我有一个字符串,它是我代码的一部分。但遗憾的是,这不起作用:
Promise.all([ functions ]){ ... }
数组中可以有非承诺值,这些值将被视为已解析。因此,最好尽早终止功能:
function twitter_ajax(){
//if settings are wrong
if( !load_twitter ) return;
//elsewhen call and return a promise
return Promise.resolve();
}
或者你在承诺中有条件地加载它们。全部:
Promise.all([
load_twitter? twitter_ajax() : 0,
load_facebook? facebook_ajax() : 0
]).then(whatever);
数组中可以有非承诺值,这些值将被视为已解析。因此,最好尽早终止功能:
function twitter_ajax(){
//if settings are wrong
if( !load_twitter ) return;
//elsewhen call and return a promise
return Promise.resolve();
}
或者你在承诺中有条件地加载它们。全部:
Promise.all([
load_twitter? twitter_ajax() : 0,
load_facebook? facebook_ajax() : 0
]).then(whatever);
<>我会考虑函数是全局存储的(在窗口上),因为你的代码没有显示任何范围,你可能需要用适当的对象替换窗口。其思想是使用括号
[]
来访问使用变量值、字符串或包含非正常字符(如句号
的字符串)的方法或属性
var settings = ["twitter_ajax","instagram_ajax"];
var promises = settings.map(function(func_name){
return window[func_name](); //Change window to what is appropriate if necessary.
})
Promise.all(promises).then(() => {
stopBlinking()
formSubmited = false;
}).catch( (err) => {
console.error(err);
stopBlinking()
formSubmited = false;
})
因此,我们使用map来执行每个数组项的函数名,并返回一个包含其返回值(promises)的数组
(几乎是你的)关于使用变量内容调用函数。我会考虑函数是全局存储的(在窗口上),因为你的代码没有显示任何范围,你可能需要用适当的对象替换窗口。其思想是使用括号
[]
来访问使用变量值、字符串或包含非正常字符(如句号
的字符串)的方法或属性
var settings = ["twitter_ajax","instagram_ajax"];
var promises = settings.map(function(func_name){
return window[func_name](); //Change window to what is appropriate if necessary.
})
Promise.all(promises).then(() => {
stopBlinking()
formSubmited = false;
}).catch( (err) => {
console.error(err);
stopBlinking()
formSubmited = false;
})
因此,我们使用map来执行每个数组项的函数名,并返回一个包含其返回值(promises)的数组
关于使用变量内容调用函数的一个(几乎与您的相同)。为什么不呢,例如
settings.push(twitter\u ajax)
然后promises=settings.map(f=>f())
我推断这些设置来自文本源,因为OP从getCookie()获取它们。因此,我的建议跳过了检查文本值和添加相关函数的步骤。虽然这也意味着恶意用户可以添加任何函数名并使其运行,但无论如何都需要某种过滤器。为什么不这样做呢?例如settings.push(twitter\u ajax)
然后promises=settings.map(f=>f())
我推断这些设置来自文本源,因为OP从getCookie()获取它们. 因此,我的建议跳过了检查文本值和添加相关函数的步骤。尽管这也意味着恶意用户可以添加任何函数名并使其运行,但无论如何都需要某种过滤器。