Javascript 根据给定变量的长度动态创建函数

Javascript 根据给定变量的长度动态创建函数,javascript,Javascript,我有一个函数调用“getDocID”,它已经在其他一些JS库中定义,我们可以为它传递一个回调函数myCallback 要获取多个ID,我们必须将其链接起来,我们需要调用下面这样的函数,这很好 function setDocIds(){ const testValues = ["2980", "2981","2982"]; const optID = "someValue"; var myCallback_2 = function (result2){ va

我有一个函数调用“getDocID”,它已经在其他一些JS库中定义,我们可以为它传递一个回调函数myCallback

要获取多个ID,我们必须将其链接起来,我们需要调用下面这样的函数,这很好

function setDocIds(){
    const testValues = ["2980", "2981","2982"];
    const optID = "someValue";
    var myCallback_2 = function (result2){
        var appID = result2.ID;
        document.getElementById("div_2").innerHTML = appID; 
    } 
    var myCallback_1 = function (result1){
        var appID = result1.ID;
        document.getElementById("div_1").innerHTML = appID; 
        getDocID(optID, testValues[2], myCallback_2);
    }
    var myCallback = function (result){
        var appID = result.ID;
        document.getElementById("emailtemplate").innerHTML = appID;
        getDocID(optID, testValues[1], myCallback_1);
    }
    getDocID(optID, testValues[0], myCallback);
}
任何人都可以指导我优化上述代码,并根据测试值的长度动态创建函数。

使用和作用域

函数getDocID(id,num,callback){ 回调({ID:`optId:${ID}和testVal:${num}`}); } 函数setDocIds(){ 常量testValues=[“2980”、“2981”、“2982']; const optID=“someValue”; testValues.forEach((n,i)=>{ getDocID(optID,n,函数(结果){ const appID=result.ID; const id=i==0?“emailtemplate”:“div_${i}”; document.getElementById(id).innerHTML=appID; }); }); } setDocIds()


为什么不尝试递归呢?您有
电子邮件模板
,然后是
div\u 1
然后是
div\u 2
。如何从索引0、1、2中获取这些值?我也不清楚你所说的“给定变量的长度”是什么意思。我也不明白?你应该修正那些会导致语法错误的“漂亮”引号。@ChrisG我在做一个工作示例时注意到了这一点。谢谢。我不认为这是一样的-OP的代码将调用链接起来,以便在下一个调用中使用上一次调用
getDocID
的结果。@PeterHull不,不是这样。是的,你们都是对的。不过getDocID可能有副作用。我同意@kemicofa,OP应该对此发表评论。