为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森栏 2019-02-28 17:09:14
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!谢谢大神解答给我启发!
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

根据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);


查看完整回答
反对 回复 2019-03-13
  • 1 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信