如何使单个函数在这里使用两次时间



在此代码中:

if (!parms.script) { // no script... load filename
            execscript(parms, function (data){
                var text={'result':'success', 'response':data };
                if(typeof(data)!='object') {
                    try {
                        text.response=JSON.parse(text.response);
                    } catch(e) {
                        text={'result':'success','response':data};
                    }
                }
                responsehttp.end(JSON.stringify(text));
            });
    } else {
        //parameterised input will replace in script
        if(query.paraminput!=undefined) {
            var paraminput=qs.parse(query.paraminput);
            parms=merge_options(parms, paraminput);
        }
        execscript(parms, function (data){
            var text={'result':'success', 'response':data };
            if(typeof(data)!='object') {
                try {
                    text.response=JSON.parse(text.response);
                } catch(e) {
                    text={'result':'success','response':data};
                }
            }
            responsehttp.end(JSON.stringify(text));
        });
    }

在execscript回调中被调用两次,我想创建一个函数来执行if和else中的两次回调。

我怎样才能做到这一点。

我尝试创建单独的函数,但是出现了responsehttp undefinederror .

问题是(我怀疑)您在http响应处理程序的上下文中声明了公共函数,因此没有定义responsehttp。相反,在外部函数的作用域中将其创建为闭包函数:

function someCallbackYouDontShowInYourQuestion(req, responsehttp) {
  // Declare your callback as a closure inside this function, so it
  // captures responsehttp state
  function callback(data) {
    var text={'result':'success', 'response':data };
    if(typeof(data)!='object') {
      try {
        text.response=JSON.parse(text.response);
      } catch(e) {
        text={'result':'success','response':data};
      }
    }
    responsehttp.end(JSON.stringify(text));
  }
  if (!parms.script) { // no script... load filename
    execscript(parms, callback);
  } else {
    //parameterised input will replace in script
    if(query.paraminput!=undefined) {
      var paraminput=qs.parse(query.paraminput);
      parms=merge_options(parms, paraminput);
    }
    execscript(parms, callback);
  }
}
callback = function (data){
            var text={'result':'success', 'response':data };
            if(typeof(data)!='object') {
                try {
                    text.response=JSON.parse(text.response);
                } catch(e) {
                    text={'result':'success','response':data};
                }
            }
            responsehttp.end(JSON.stringify(text));
        }
execscript(parms, callback);

相关内容

  • 没有找到相关文章

最新更新