将请求响应分配给全局变量-模块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 ofconst books
以同样的方式,也可以使用函数:
window.getAll = () => {
return getAllBooks();
}
如果javascript函数与其他语言中的函数一样工作,那么书籍就不会存在于函数范围之外。为什么不在模块中将图书声明为全局图书,然后将其导出?
getAllBooks
不会返回任何内容,而且它作为全局图书也没有意义。如果代码必须是全局的,则需要重新考虑代码。getAllBooks
返回数据,因为在BookController
开头导入的Fetch.js
文件中,它在数据库中发出请求。getAllBooks
没有返回语句,我在问题中添加了Fetch.js
文件,看看请求是否有返回。