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, время: 06:37. |