Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS видимость колбека внутри колбека? (https://javascript.ru/forum/misc/70281-js-vidimost-kolbeka-vnutri-kolbeka.html)

ksa 24.08.2017 11:34

Либо так...

chrome.runtime.onMessage.addListener(
	function(message, sender, sendResponse) {
		var fnc=function(data){
			sendResponse('работает аякс');
		};
		$.ajax({
			url: "http://some.site"
			,type: "POST"
			,data: message
			,success: fnc
		});
		sendResponse('просто');
	}
);

Nexus 24.08.2017 12:50

paka, добавьте опцию complete и смотрите статус запроса.
Вообще в консоли все должно быть написано.
Вероятно запрос фейлится.

ksa 24.08.2017 13:18

Цитата:

Сообщение от Nexus
Вероятно запрос фейлится.

Это легко проверить добавлением
alert('Test');

в самое начало колбек-функции. :yes:

ksa 24.08.2017 14:57

Цитата:

Сообщение от paka (Сообщение 462557)
У меня есть код (расширение для хрома), который я не понимаю из-за особенностей js

chrome.runtime.onMessage.addListener(
  function(message, sender, sendResponse)
  {
    $.ajax({
      url: "http://some.site"
      ,type: "POST"
      ,data: message
      ,success: function(data)
      {
        sendResponse('работает аякс');
      }
    });
    
    sendResponse('просто');
  }
);


Почему функция sendResponse('работает аякс'); не срабатывает?

С учетом того, что 14-я строка у тебя работает - то и все остальное должно срабатывать...
function message(Txt) {
	alert(Txt)
};
function test(Fnc){
	setTimeout(function(){
		Fnc('Ok');
	},1000);
	Fnc('Start');
};
test(message);

Alexandroppolus 24.08.2017 17:00

Вроде бы для того, чтобы можно было вызывать sendResponse из асинхронного кода, надо в функции, переданной в chrome.runtime.onMessage.addListener, вернуть true. Чтобы хром знал, что надо дожидаться этого вызова, а не "обрубить все концы" сразу.

См. документацию.


Часовой пояс GMT +3, время: 23:18.