Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.
Вот пример того же:
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
для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.
Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.
в вашем запросе ajax, добавив:
dataType: "jsonp",
после строки:
type: 'GET',
должен решить эту проблему ..
надеюсь, что эта помощь вам поможет
У вас должна возникнуть идея, почему вы получаете эту проблему после прохождения вышеупомянутых ответов.
self.send_header('Access-Control-Allow-Origin', '*')
Вам просто нужно добавить указанную выше строку на стороне вашего сервера.
Вы должны изменить код вашей серверной части, как указано ниже
public class CorsResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin","*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
}
}
Это происходит, когда вы пытаетесь получить доступ к ресурсам другого домена.
Это функция безопасности, позволяющая избежать свободного доступа к любым ресурсам этого домена (к которым можно получить доступ, например, для получения точной копии ваш сайт в пиратском домене.)
Заголовок ответа, даже если он 200OK не позволяет другим источникам (доменам, портам) обращаться к ресурсам ressources.
Вы можете исправить эта проблема, если вы являетесь владельцем обоих доменов:
Чтобы изменить это, вы можете записать это в .htaccess запрошенного файла домена:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Если вы установите это в заголовок ответа запрошенного файла, вы разрешите всем получить доступ к ресурсам ressources:
Access-Control-Allow-Origin : *
ИЛИ
Access-Control-Allow-Origin : http://www.my-domain.com
Мир и код;)
Ваш браузер не разрешает ваш запрос .. вам нужно установить аддон вашего веб-браузера
Для Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/