fxobject, вот, взял с твоего "текста" понятный кусок...
Цитата:
let X B() function B() { myFnc() alert(X) } async function myFnc() { return await d() } async function d() { X = 'новая строка' } |
Цитата:
let X A() function A(){ B(); alert('Это из A ' + X) } function B() { myFnc() alert('Это из B ' + X) } async function myFnc() { return await d() } async function d() { X = 'новая строка' } |
Цитата:
let X A() function A(){ B(); alert('Из A ' + X) } function B(){ d(); alert('Из B ' + X) } async function d(){ X = 'новая строка' ; } |
Цитата:
let X A() function A(){ B().then(res => alert('Из A ' + X)) } async function B(){ d().then(res => alert('Из B ' + X)); } async function d(){ X = 'новая строка' ; } |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Ну я понимаю, что бывают ситуации, когда очень нужно вызвать асинхронную функцию, дождаться результата и обработать его с верхнего уровня, где нельзя использовать await (вроде в последних Chrome и Node уже можно). Но ведь тогда так можно
;(async function () { let res = await asfunc (); // обрабатываем результат })(); |
Цитата:
const o = asfunc().then(res => o.emit('data', res)) o.on('data', (err, res) => alert(res)) |
подписку на события использую постоянно. вопрос технический. пытаюсь упорядочить представление о предмете.
Итак предложенный работающий вариант: let X A() function A(){ B(); alert('Это из A ' + X) } function B() { myFnc() alert('Это из B ' + X) } async function myFnc() { return await d() } async function d() { X = 'новая строка'} Действительно выдает правильный результат. Что внесло еще больше смятений..... потому как не должен. Внесем в него небольшие поправки.... давайте задержим выполнение функции MyFunc например так: async function myFnc() { let promise = new Promise((resolve,reject)=>{ setTimeout(()=>resolve("ok"),4000)}); let result = await promise; alert(result); return await d() } Вот так уже не работает...... |
Часовой пояс GMT +3, время: 20:59. |