не async на узле?
вы пытаетесь построить конечную точку API, так что все остальные случаи не используя асинхра должны быть выброшены в окне. Как только у вас будет один неасинхронный код в проекте node.js, он заморозит весь процесс до его завершения. Помните, что Node.js запускает один поток (теоретически), что означает, что все другие одновременные пользователи будут заморожены. Это один из способов заставить людей расстраиваться.
скажем, например, вам нужно прочитать файл с вашего сервера Node.js по запросу от клиента (скажем, в браузере), вы хотите сделать его обратным вызовом/обещанием, никогда не выполняйте неасинхронный с API сервера просто нет причин не (в вашем случае).
пример ниже
import * as express from "express";
import * as fs from 'fs';
let app = express();
app.get('/getFileInfo', function(req, res) {
fs.readFile('filePath', 'UTF-8', function(err, data) {
if (err) {
console.log(err);
res.json({error: err});
} else {
res.json({data: data});
}
})
});
//users will freeze while the file is read until it is done reading
app.get('/nonasync', function(req, res) {
let data = fs.readFileSync('path', 'utf-8');
res.json({data:data});
});
точно такая же идея относится к вашему веб-браузер .. если вы собираетесь не делать что-то асинхронная в браузерах Javascript весь веб-приложение будет отвечать на запросы потому что он также работает таким же образом, он имеет один основной цикл и, если они не находятся в обратных вызовах/обещаниях/наблюдаемых, сайт замерзнет. Ajax - это намного более удобный способ реализовать пост/get/put/delete/get: id с сервера, а затем XMLHttpRequest. теперь обе они имеют возможность отправлять и получать JSON не только XML. Ajax более безопасен из-за поддержки различных спецификаций совместимости браузеров, поскольку XMLHttpRequest имеет некоторые ограничения в IE и Safari, я считаю.
ПРИМЕЧАНИЕ: если вы не используете фреймворк с узлом.JS вы должны, это помогает держать ваши конечные точки аккуратный и проверяемые а также возможность передать проект на другие без них того, чтобы узнать, как вы реализовали свой REQ, рес структурировать
некоторые рамки для узла
- Экспресс 4 (мое предпочтение, апи документ действительно очень хороший и сильный
сообщество)
- Restify (используемый Netflix - очень легкий)
- Хапи (никогда не используется, но слышал)
некоторые рамки для веб-браузеров, которые могут вам понравиться
угловой 2 (мое предпочтение, как я из стека MEAN)
reactJS (создан большой синий Facebook)
нокаутJS (простой и простой)
все рамки браузера имеют свои собственные функции , но больше склоняются к Наблюдаемым объектам.
Андрей благодарен за ваш ответ. Я думал, что AJAX был таким же, как XMLHttpRequest. Вернее, я думал, что AJAX использовал XMLHttpRequest для создания асинхронных файлов. Я использую экспресс, а также хочу попробовать угловой. Я не использовал стек MEAN, но хочу попробовать весь стек. Ваш ответ был действительно полезен, но я все еще немного смутился. Как использовать AJAX без использования XmlHttpRequest? – Vato
Хорошо, я думаю, что понял. Я думал, что существует только одна библиотека AJAX, которая была XmlHttpRequest. Я понял, что есть много других библиотек. Теперь все имеет смысл :) – Vato
вот большое объяснение SO, извините за смущение вас! то, что я пытался понять, заключается в том, что библиотеки обтекают XML-запрос и дают больше возможностей использования и дают больше API для использования вместо базового XMLHttpRequest, думают о нем как о расширении XMLHttRequests -> лучше ответил [здесь] (http: // stackoverflow.com/questions/4657287/what-is-the-difference-between-xmlhttprequest-jquery-ajax-jquery-post-jquery), но для решения вашей проблемы с xml vs json вам просто нужно указать его в запросе делать. XMLHttpRequest - это API-интерфейс браузера для использования протокола HTTP. – Andrei