回调函数作为fetch中的参数

时间:2017-12-14 13:48:27

标签: javascript ecmascript-6 fetch

我试图将回调函数作为fetch的参数传递。但是当我在api.js中完成提取时,我不知道如何从index.js运行回调。

index.js

import Api from './Api'
Api.post(callback)

Api.js

class Api {
  constructor () {}
  static post(callback) {
    let url 'dummy';
    let data = {
      id: 2
    }

    let request = new Request(url, {
      method: 'POST',
      body: data,
      header: new Headers()
    })

    fetch(request)
      .then(function() {
        console.log(request);
      })
  }
}

export default Api;

2 个答案:

答案 0 :(得分:2)

可以.then()

中调用你的回调函数
class Api {
  static post (callback) {
    const request = /* ... */;
    fetch(request)
      .then(response => response.json())
      .then(result => callback(result)); // if you have a result
  }
}

......但你为什么要那样做?尝试回复承诺并履行承诺。这就是promises(以及fetch API)的用途。

class Api {
  static post () {
    const request = /* ... */;
    return fetch(request)
      .then(response => response.json());
  }
}
// usage: 
Api.post().then(callback);

答案 1 :(得分:0)

您只需在then回调中调用回调:

fetch(request)
  .then(function() {
    console.log(request);
    callback();
  })

或链接它:

fetch(request)
  .then(function() {
    console.log(request);
  }).then(callback);