模拟ajax异步请求时出现问题

let mapping = new Map([

    ["/getData/dataList", getData.getDataList()],

    ["/getData/id", getData.getKnowledgeById],

    ["/getData/search", getData.searchKnowledge]

]);


let ajax = new class {

  constructor(mapping) {

      this.mapping = mapping;

  }


  request(option) {

      return this.mapping.get(option.url);

  }

}(mapping);


option是一个对象,调用方式如下:


ajax.request({

        url: '/getData/id',

        id: 1

});


代码如上所述,mapping是存的一个url和函数的映射表,现在存在一个问题是,当我调用的是getKnowledgeById函数时,这个函数是需要一个参数的,request里的return只能return回这个函数,现在的问题是:

如何通过我现在传入的option对象中的参数自动判断我是传了id还是input值,分别再应用到getKnowledgeById和searchKnowledge这两个函数中,返回执行结果?


困惑已久,求大神解答!


补充最后用的方法:


return this.mapping.get(option.url).call(getData, option.args);

这一行就OK!谢谢大神解答给我启发!


森栏
浏览 383回答 1
1回答

aluckdog

根据url确定是id还是input值let mapping = new Map([    ["/getData/dataList", getData.getDataList()],    ["/getData/id", getData.getKnowledgeById],    ["/getData/search", getData.searchKnowledge]]);let ajax = new class {  constructor(mapping) {      this.mapping = mapping;  }  request(option) {      if(option.args){          let func = this.mapping.get(option.url);          return func(option.args);      }else{        return this.mapping.get(option.url);      }  }}(mapping);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript