繁体   English   中英

将请求响应分配给全局变量 - Module Javascript

[英]Assign request response to the global variable - Module Javascript

假设我创建了一个BookController并且在这个控制器中有一个类似于下面例子的函数:

import Fetch from './Fetch.js';

// GET
async function getAllBooks() {
  const books = await Fetch.get('/books');
}

仍然在BookController.js文件中,我是否可以导出此函数以在另一个 js 文件中调用它,如下所示?

function getAll() {   
  return getAllBooks();
}

export default {
  getAll,
};

另一件事,是否可以将const books转换为全局变量并导出该变量,以便我可以在任何地方使用它?

获取.js

// Fetch.js
const _apiHost = 'https://api.example';

async function request(url, params, method = 'GET') {

  const options = {
    method,
    headers: {
      'Content-Type': 'application/json'
    }
  };

  if (params) {   
    if (method === 'GET') {
      url += '?' + objectToQueryString(params);
    } else {        
      options.body = JSON.stringify(params);      
    }
  }

  const response = await fetch(_apiHost + url, options);

  if (response.status !== 200) {
    return generateErrorResponse('The server responded with an unexpected status.');
  }

  const result = await response.json();

  return result;

}

function objectToQueryString(obj) {
  return Object.keys(obj).map(key => key + '=' + obj[key]).join('&'); 
}

function generateErrorResponse(message) {
  return {
    status : 'error',
    message
  };
}

function get(url, params) {   
  return request(url, params);
}

function create(url, params) {    
  return request(url, params, 'POST');
}

 function update(url, params) {
  return request(url, params, 'PUT');
}

function remove(url, params) {   
  return request(url, params, 'DELETE');
}

export default {
  get,
  create,
  update,
  remove
};

在javascript中,我们可以使用window对象来使用全局变量。

声明 book 变量,如window.books="some value"不是const books

以同样的方式使用函数:

window.getAll = () => {   
  return getAllBooks();
}

并在任何地方获得价值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM