【问题标题】:How to change jQuery Ajax done callback param如何更改 jQuery Ajax 完成回调参数
【发布时间】:2020-01-08 07:19:25
【问题描述】:

我希望函数做这些事情,并成为一个异步函数:

  1. 使用 jQuery $.get 下载 json
  2. 使用json创建对象
  3. 返回对象


所以如果我打电话给

func.then(a => {
  ...
})

"a" 将是在步骤 2 中创建的对象

所以我写了,

    createObj(sourceUrl) {
        return $.get(sourceUrl).done((data)=> {
            let thing = new Something();
            thing.id = data.id;
            thing.messages = data.messages; 

            return Promise.resolve(thing);
        })
    }

我称之为

this.createObj(url).done((thing) => {
  console.log('Got a', thing);
  return thing.go()
}

当我调用它时,我希望“.done()”部分将接收在“createObj()”中创建的“事物”
但是,结果是我在 $.get()

中得到的 json

我是否误解了“解决”的概念?
还是 jQuery Ajax 的行为与标准 ES6 Promise 不同?因为我在其他部分用 Promise.resolve 写了一些东西,它起作用了

【问题讨论】:

    标签: javascript jquery ajax ecmascript-6 promise


    【解决方案1】:

    这应该可行:

    const createObj = (sourceUrl) => {
      return new Promise((resolve, reject) => {
        $.get(sourceUrl).done((data)=> {
          let thing = new Something();
          thing.id = data.id;
          thing.messages = data.messages; 
    
          return resolve(thing);
        });
      });
    }
    
    createObj(url)
      .then((data) => console.log(data));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2013-02-05
      • 1970-01-01
      相关资源
      最近更新 更多