Javascript аргументы конструктора объектов доступа в глубоких вложенных функциях [duplicate]

ECMAScript 6 имеет «генераторы», которые позволяют вам легко программировать в асинхронном стиле.

function* myGenerator() {
    const callback = yield;
    let [response] = yield $.ajax("https://stackoverflow.com", {complete: callback});
    console.log("response is:", response);

    // examples of other things you can do
    yield setTimeout(callback, 1000);
    console.log("it delayed for 1000ms");
    while (response.statusText === "error") {
        [response] = yield* anotherGenerator();
    }
}

Для запуска вышеуказанного кода вы делаете это:

const gen = myGenerator(); // Create generator
gen.next(); // Start it
gen.next((...args) => gen.next([...args])); // Set its callback function

Если вам нужно настроить таргетинг на браузеры, которые не поддерживают ES6, вы можете запустить код через Babel или short-compiler для генерации ECMAScript 5.

Обратный вызов ...args завернут в массив и разрушен, когда вы их читаете так что шаблон может справиться с обратными вызовами, которые имеют несколько аргументов. Например, с узлом fs :

const [err, data] = yield fs.readFile(filePath, "utf-8", callback);

1081
задан JJJ 8 February 2015 в 17:10
поделиться

20 ответов

1159
ответ дан 18 revs, 4 users 56% 24 August 2018 в 05:06
поделиться
7
ответ дан Arman McHitarian 24 August 2018 в 05:06
поделиться
7
ответ дан Arup Hore 24 August 2018 в 05:06
поделиться
3
ответ дан Bhargav Rao 24 August 2018 в 05:06
поделиться
13
ответ дан carlodurso 24 August 2018 в 05:06
поделиться
3
ответ дан Community 24 August 2018 в 05:06
поделиться
43
ответ дан Daniel Alexiuc 24 August 2018 в 05:06
поделиться
7
ответ дан Dmitri Pavlutin 24 August 2018 в 05:06
поделиться
8
ответ дан gnerkus 24 August 2018 в 05:06
поделиться
5
ответ дан James Drinkard 24 August 2018 в 05:06
поделиться
124
ответ дан Jonathan Lin 24 August 2018 в 05:06
поделиться
48
ответ дан Madara Uchiha 24 August 2018 в 05:06
поделиться
4
ответ дан mrmaclean89 24 August 2018 в 05:06
поделиться
1
ответ дан PRADEEP SINGH Chundawat 24 August 2018 в 05:06
поделиться
10
ответ дан RobG 24 August 2018 в 05:06
поделиться
13
ответ дан Seph 24 August 2018 в 05:06
поделиться
1
ответ дан Simon Groenewolt 24 August 2018 в 05:06
поделиться
4
ответ дан tathagata 24 August 2018 в 05:06
поделиться
0
ответ дан unclexo 24 August 2018 в 05:06
поделиться
0
ответ дан Willem van der Veen 24 August 2018 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: