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

将请求响应分配给全局变量-模块Javascript,javascript,Javascript,假设我创建了一个BookController,并在此控制器中具有如下示例所示的功能: import Fetch from './Fetch.js'; // GET async function getAllBooks() { const books = await Fetch.get('/books'); } 仍然在BookController.js文件中,我是否可以导出此函数以在另一个js文件中调用它,如下所示 function getAll() { return getAl

假设我创建了一个
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,
};
另一件事,是否可以将
constbooks
转换为全局变量并导出该变量,以便我可以在任何地方使用它

Fetch.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中,我们可以使用全局变量和窗口对象

声明book变量,如
window.books=“some value”
intead of
const books

以同样的方式,也可以使用函数:

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

如果javascript函数与其他语言中的函数一样工作,那么书籍就不会存在于函数范围之外。为什么不在模块中将图书声明为全局图书,然后将其导出?
getAllBooks
不会返回任何内容,而且它作为全局图书也没有意义。如果代码必须是全局的,则需要重新考虑代码。
getAllBooks
返回数据,因为在
BookController
开头导入的
Fetch.js
文件中,它在数据库中发出请求。
getAllBooks
没有返回语句,我在问题中添加了
Fetch.js
文件,看看请求是否有返回。