Why does Dva fetch return Promise instead of the requested data

the fetch of dva is used to access the network and the data has been returned successfully. Why does fetch return promise instead of the requested data

import fetch from "dva/fetch";

function parseJSON(response) {
  return response.json();
}

function checkStatus(response) {
  if (response.status >= 200 && response.status < 300) {
    return response;
  }

  const error = new Error(response.statusText);
  error.response = response;
  throw error;
}

/**
 * Requests a URL, returning a promise.
 *
 * @param  {string} url       The URL we want to request
 * @param  {object} [options] The options we want to pass to "fetch"
 * @return {object}           An object containing either "data" or "err"
 */
export default function request(url, options) {
  return fetch(url, options)
    .then(checkStatus)
    .then(parseJSON)
    .then(data => ({ data }))
    .catch(err => ({ err }));
}

request here data is a Promise

effects: {
    *login({payload }, { call, put }) {  // eslint-disable-line
      const {data} = yield call(login,payload);
      if(data.success){
        routerRedux.push("./users")
      }
    },
  },

service is called by model

export function login(data)
{
  let _data = fetch(url,data);
  console.log(_data);
  return _data;
}

the environmental background of the problems and what methods you have tried

related codes

/ / Please paste the code text below (do not replace the code with pictures)

what result do you expect? What is the error message actually seen?

Aug.09,2021

what I get when I call is the returned data


Login in

service is a common method. Immediately after the method is executed, a Promise, is returned, that is, you call fetch

.

login in effects is the generator method. The final promise median is obtained through yeild, that is, the data object encapsulated in the last then


No problem ~
still needs practice ~

Menu