Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.
Вот пример того же:
var async = require("async");
// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
// some asynchronous operation
$.ajax({
url: '...',
success: function(response) {
result.response = response;
_callback();
}
});
});
async.parallel(asyncTasks, function(){
// result is available after performing asynchronous operation
console.log(result)
console.log('Done');
});
Я использую объект result
для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.
Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.
Мой хрустальный шар говорит, что вы загружаете модель, используя либо file://
, либо C:/
, которые остаются верными сообщению об ошибке, поскольку они не http://
. Таким образом, вы можете установить веб-сервер на локальном компьютере или загрузите модель в другое место и используйте jsonp
и измените URL-адрес на http://example.com/path/to/model
Для всех y'all на MacOS
... установите простой LaunchAgent , чтобы включить эти гламурные возможности в вашей собственной копии Chrome ...
Сохраните plist
, названный любым (например, launch.chrome.dev.mode.plist
) в ~/Library/LaunchAgents
с похожим контентом, чтобы ...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>launch.chrome.dev.mode</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Google Chrome.app/Contents/MacOS/Google Chrome</string>
<string>-allow-file-access-from-files</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Он должен запускаться при запуске , но вы можете заставить его сделать это в любое время с помощью команды терминала
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA!
Я собираюсь перечислить 3 разных подхода к решению этой проблемы:
npm
: установите live-server , используя npm install -g live-server
. Затем перейдите в этот каталог, откройте терминал и введите live-server
и нажмите enter, страница будет отправлена на localhost:8080
. БОНУС: он также поддерживает горячую перезагрузку по умолчанию. target
до "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
и сохраните. Затем с помощью Chrome откройте страницу с помощью ctrl+o
. ПРИМЕЧАНИЕ. НЕ используйте этот ярлык для регулярного просмотра. Для тех, кто в Windows без Python или Node.js, есть еще легкое решение: Mongoose .
Все, что вы делаете, это перетащить исполняемый файл туда, где корень сервер должен быть и запустить его. На панели задач появится значок и он перейдет на сервер в браузере по умолчанию.
Кроме того, Z-WAMP - это 100% портативный WAMP, который запускается в одном папка, это потрясающе. Это вариант, если вам нужен быстрый сервер PHP и MySQL.
Я получал эту точную ошибку при загрузке HTML-файла в браузере, который использовал json-файл из локального каталога. В моем случае я смог решить это, создав простой сервер узлов, который позволил статическому контенту сервера. Я оставил код для этого в этом другом ответе .
Подходим к этому сегодня.
Я написал код, который выглядит так:
app.controller('ctrlr', function($scope, $http){
$http.get('localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
... но он должен был выглядеть так:
app.controller('ctrlr', function($scope, $http){
$http.get('http://localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
Единственное различие заключалось в отсутствии http://
во втором фрагменте кода.
Просто хотелось поместить это там, если есть другие, имеющие аналогичную проблему.
Я предлагаю вам использовать мини-сервер для запуска таких приложений на локальном хосте (если вы не используете какой-либо встроенный сервер).
Вот что очень просто настроить и запустить:
https://www.npmjs.com/package/tiny-server
Он просто говорит, что приложение должно запускаться на веб-сервере. У меня была такая же проблема с хром, я начал tomcat и перенесла туда свое приложение, и оно сработало.
Я также смог воссоздать это сообщение об ошибке при использовании тега привязки со следующим href:
<a href="javascript:">Example a tag</a>
В моем случае для получения «курсора указателя» использовался тег «a», и событие фактически контролировалось некоторым событием jQuery при щелчке. Я удалил href и добавил класс, который применяется:
cursor:pointer;
Один из способов загрузки локальных файлов - использовать их в папке проекта вместо внешней папки проекта. Создайте одну папку в файлах вашего проекта, аналогичную тому, как мы создаем для изображений, и заменим раздел, где используется полный локальный путь, отличный от пути к проекту, и используйте относительный URL-файл файла в папке проекта. Это сработало для меня
Многие проблемы для этого, с моей проблемой отсутствует «/»: jquery-1.10.2.js: 8720 XMLHttpRequest не может загрузить http: // localhost: xxxProduct / getList_tagLabels / Это должно быть : http: // localhost: xxx / Product / getList_tagLabels /
Надеюсь, эта помощь поможет вам решить эту проблему.
Невозможно загрузить статические локальные файлы (например: svg) без сервера. Если у вас установлен NPM / YARN на вашем компьютере, вы можете настроить простой http-сервер, используя « http-server »
npm install http-server -g
http-server [path] [options]
Или открыть терминал в этой папке проекта и введите «hs». Он автоматически начнет сервер HTTP live.
blockquote>
Я подозреваю, что это уже упоминалось в некоторых ответах, но я немного изменю это, чтобы получить полный рабочий ответ (проще найти и использовать).
npm install -g http-server
. index.html
/ yoursome.html
находится. http-server -c-1
Откройте веб-браузер до http://localhost:8080
или http://localhost:8080/yoursome.html
- в зависимости от вашего имени файла html.
Просто измените url на http://localhost
вместо localhost
. Если вы откроете файл html из локального, вы должны создать локальный сервер для работы с этим html-файлом, самый простой способ - Web Server for Chrome
. Это устранит проблему.
эр. Я только что нашел некоторые официальные слова: «Попытка загрузить незастроенные удаленные модули AMD, использующие додзе / текстовый плагин, не будет выполнена из-за ограничений безопасности для кросс-оригинала. (Встроенные версии модулей AMD не подвержены влиянию, поскольку вызовы dojo / text устраняются система сборки.) " https://dojotoolkit.org/documentation/tutorials/1.10/cdn/