Проблема с обещанием javascript, которая никогда не решается ⇐ Javascript
Проблема с обещанием javascript, которая никогда не решается
Я создал два пользовательских обещания, которые идентичны, за исключением того, что они работают с разными пользовательскими данными. Оба обещания используют классы и методы Google Maps API v-3.
Странно то, что всякий раз, когда вызывается первый из них, он никогда не разрешается и всегда возвращает статус отклонения. Кроме того, даже если это не разрешится, код обещания все равно выполнит печать в консоли нескольких console.log(), которые я положил в качестве элементов управления.
Итак, эти два обещания:
var checkDeparture = новое обещание((разрешить, отклонить) => { console.log('1. Вызов CheckDeparture'); //первое управление функцией вар newDeparture = ''; вар геокодер = новый google.maps.Geocoder(); geocoder.geocode({'address': $('#startTransfer').val()}, (результаты, статус) => { console.log('2. Вызывается геокодер CheckDeparture'); //вторая функция управления if(status == google.maps.GeocoderStatus.OK) { coordPoint = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); if(google.maps.geometry.poly.containsLocation(coordPoint, window.venicePolygon)) { console.log('3. CheckDeparture containsLocation вызван'); //управление третьей функцией newDeparture = 'Пьяццале Рома, Венеция, ВЕ, Италия'; } еще { newDeparture = $('#startTransfer').val(); } } console.log(newDeparture); //контроль результата функции разрешить (новыйОтъезд); }); ignore('Извините, произошла ошибка при проверке обещания Departure...'); }); var checkDestination = новое обещание ((разрешить, отклонить) => { console.log('1. Вызов CheckDestination'); //первое управление функцией вар newDestination = ''; вар геокодер = новый google.maps.Geocoder(); geocoder.geocode({'address': $('#endTransfer').val()}, (результаты, статус) => { console.log('2. Вызывается геокодер CheckDestination'); //вторая функция управления if(status == google.maps.GeocoderStatus.OK) { coordPoint = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); if(google.maps.geometry.poly.containsLocation(coordPoint, window.venicePolygon)) { console.log('3. CheckDestination containsLocation вызывается'); //управление третьей функцией newDestination = 'Пьяццале Рома, Венеция, ВЕ, Италия'; } еще { newDestination = $('#endTransfer').val(); } } console.log(newDestination); //контроль результата функции разрешить (новое место назначения); }); ignore('Извините, произошла ошибка при проверке обещания Destination...'); }); И вот где их вызывают:
var CheckedDeparture = CheckDeparture; вар CheckDestination = CheckDestination; Promise.all([checkedDeparture,checkedDestination]).then(() => { console.log(checkedDeparture +checkedDestination); //контроль значений обещаний вар запрос = { происхождение: провереноОтправление, пункт назначения: провереноDestination, travelMode: google.maps.TravelMode.DRIVING, unitSystem: google.maps.UnitSystem.METRIC }; направленияService.route(запрос, (результат, статус) => { console.log('4. проверка значения источника: ' + request.origin); //четвертая функция управления console.log('5. проверка значения пункта назначения:' + request.destination); //пятый функциональный элемент управления console.log('6. DirectionsService вызван'); //шестое функциональное управление если (статус == google.maps.DirectionsStatus.OK) { //заниматься вещами } еще { направленияDisplay.setDirections({routes: []}); theMap.setCenter(window.globalCenter); } }); }).catch(e => { console.log(е); }); Я не могу понять, где на самом деле находится ошибка, особенно потому, что checkingDestination, похоже, разрешается правильно. Кроме того, поскольку checkingDeparture никогда не разрешается (но все равно выполняется), вся часть кода, связанная с .then(), не будет выполнена.
Я создал два пользовательских обещания, которые идентичны, за исключением того, что они работают с разными пользовательскими данными. Оба обещания используют классы и методы Google Maps API v-3.
Странно то, что всякий раз, когда вызывается первый из них, он никогда не разрешается и всегда возвращает статус отклонения. Кроме того, даже если это не разрешится, код обещания все равно выполнит печать в консоли нескольких console.log(), которые я положил в качестве элементов управления.
Итак, эти два обещания:
var checkDeparture = новое обещание((разрешить, отклонить) => { console.log('1. Вызов CheckDeparture'); //первое управление функцией вар newDeparture = ''; вар геокодер = новый google.maps.Geocoder(); geocoder.geocode({'address': $('#startTransfer').val()}, (результаты, статус) => { console.log('2. Вызывается геокодер CheckDeparture'); //вторая функция управления if(status == google.maps.GeocoderStatus.OK) { coordPoint = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); if(google.maps.geometry.poly.containsLocation(coordPoint, window.venicePolygon)) { console.log('3. CheckDeparture containsLocation вызван'); //управление третьей функцией newDeparture = 'Пьяццале Рома, Венеция, ВЕ, Италия'; } еще { newDeparture = $('#startTransfer').val(); } } console.log(newDeparture); //контроль результата функции разрешить (новыйОтъезд); }); ignore('Извините, произошла ошибка при проверке обещания Departure...'); }); var checkDestination = новое обещание ((разрешить, отклонить) => { console.log('1. Вызов CheckDestination'); //первое управление функцией вар newDestination = ''; вар геокодер = новый google.maps.Geocoder(); geocoder.geocode({'address': $('#endTransfer').val()}, (результаты, статус) => { console.log('2. Вызывается геокодер CheckDestination'); //вторая функция управления if(status == google.maps.GeocoderStatus.OK) { coordPoint = new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()); if(google.maps.geometry.poly.containsLocation(coordPoint, window.venicePolygon)) { console.log('3. CheckDestination containsLocation вызывается'); //управление третьей функцией newDestination = 'Пьяццале Рома, Венеция, ВЕ, Италия'; } еще { newDestination = $('#endTransfer').val(); } } console.log(newDestination); //контроль результата функции разрешить (новое место назначения); }); ignore('Извините, произошла ошибка при проверке обещания Destination...'); }); И вот где их вызывают:
var CheckedDeparture = CheckDeparture; вар CheckDestination = CheckDestination; Promise.all([checkedDeparture,checkedDestination]).then(() => { console.log(checkedDeparture +checkedDestination); //контроль значений обещаний вар запрос = { происхождение: провереноОтправление, пункт назначения: провереноDestination, travelMode: google.maps.TravelMode.DRIVING, unitSystem: google.maps.UnitSystem.METRIC }; направленияService.route(запрос, (результат, статус) => { console.log('4. проверка значения источника: ' + request.origin); //четвертая функция управления console.log('5. проверка значения пункта назначения:' + request.destination); //пятый функциональный элемент управления console.log('6. DirectionsService вызван'); //шестое функциональное управление если (статус == google.maps.DirectionsStatus.OK) { //заниматься вещами } еще { направленияDisplay.setDirections({routes: []}); theMap.setCenter(window.globalCenter); } }); }).catch(e => { console.log(е); }); Я не могу понять, где на самом деле находится ошибка, особенно потому, что checkingDestination, похоже, разрешается правильно. Кроме того, поскольку checkingDeparture никогда не разрешается (но все равно выполняется), вся часть кода, связанная с .then(), не будет выполнена.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Вложенное асинхронное достоинство с обещанием все петли не понятно
Anonymous » » в форуме Javascript - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-