@FinchRED

Можно ли использовать await/async таким образом, возврат результа из async в синхронную функцию?

Скрипт для интеграции квиза с applpplatform .
Есть две кнопки на двух этапах квиза.
Внутри синхронной функции вызываю async функцию с fetch api парсю ответ,получаю id и передаю её в синхронную функцию ,которая тупо записывает в глобальную переменную. Потому как не знаю как иначе сохранить idк созданного контакта для апдейта на следующем этапе квиза.
Если не сложно подскажите, в целом может ли такой подход вызвать баги.И можно ли как-то лучше.Просто скрипт повесил на два квиза. В одном 10% отказ, а другом 90 % отказ. Хотя скрипты идентичны.

function result_id(result){
 console.log(result);
};
	
         let url =  "https://b24-84z6sr.bitrix24.ru/rest/1/irf1tr07cp90nlym/crm.contact.add.json";
				console.log (url);

         let data = 
					{
						'fields':{
		          	    'NAME':'квиз  ',
		         		'TITLE': 78888888884,
		        		'EMAIL':{'n0':{'VALUE':"set@mail.com",
		                'VALUE_TYPE':'WORK'}},
		           		"SOURCE_ID": 41996480,     
		          	 	"ASSIGNED_BY_ID":1,
		          		"OPENED": "Y", 
		          		"SOURCE_DESCRIPTION":'( https:/// )'
		      			
       				}}			
			
        	async function bitrixHttp(data){    

	 		const response = await fetch(url, {
     					method: 'POST', 
       					headers: new Headers(
       						{
       							Accept: 'application/json',
      									'Content-Type': 'application/json'
   							 }),  
   						body: JSON.stringify(data)
  						})
	 		console.log("Assynh");
	 		let data_res = await response.json(data);
	 		await result_id(data_res['result']);	
	 		};
	 		
	 	  setTimeout(bitrixHttp(data),2000);
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@FODD
Можете относиться к асинхонным функциям/промисам как к вирусу - если функция в него вляпалась, все выше по стеку тоже должно стать асинхронным.
В вашем случае вы можете или переписать всё, или использовать старый добрый XMLHTTPRequest в синхронном режиме (и мириться с блокировкой основого потока, да)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы