Javascript 如何更改jQuery Ajax done回调参数

Javascript 如何更改jQuery Ajax done回调参数,javascript,jquery,ajax,ecmascript-6,promise,Javascript,Jquery,Ajax,Ecmascript 6,Promise,我希望函数能够完成这些任务,并且是一个异步函数: 使用jQuery$.get下载json 使用json创建一个对象 返回对象 所以如果我打电话 func.then(a => { ... }) “a”将是在步骤2中创建的对象 所以我写了, createObj(sourceUrl) { return $.get(sourceUrl).done((data)=> { let thing = new Something();

我希望函数能够完成这些任务,并且是一个异步函数:

  • 使用jQuery$.get下载json
  • 使用json创建一个对象
  • 返回对象

  • 所以如果我打电话

    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()”中创建的“thing”
    然而,它原来是我在$.get()中得到的json

    我是否误解了“解决”的概念 或者jQueryAjax的行为与标准ES6承诺不同?因为我在另一部分写了一些带有Promise.resolve的东西,它很有效

    这应该有效:

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