Это функция Generator .
Генераторы - это функции, которые могут быть выведены и позже введены повторно. Их контекст (переменные привязки) будет сохранен во всех входах.
Вызов функции генератора не выполняет его тело немедленно; вместо этого возвращается объект-итератор для функции. Когда вызывается метод итератора
blockquote>next()
, тело функции генератора выполняется до первого выраженияyield
, которое указывает значение, которое должно быть возвращено из итератора, или, сyield*
, делегирует другую функцию генератора.Историческое примечание:
Предложен синтаксис для
EcmaScript.next
.Дэйв Херман из Mozilla рассказал о EcmaScript.next . В 30:15 он рассказывает о генераторах.
Ранее он объясняет, как Mozilla экспериментально реализует предложенные языковые изменения, чтобы помочь руководству комитета. Дэйв работает в тесном контакте с Бренданом Эйчем, техническим директором Mozilla (я думаю) и оригинальным дизайнером JavaScript.
Более подробную информацию о рабочей группе рабочей среды EcmaScript можно найти по адресу: http: //wiki.ecmascript. org / doku.php? id = гармония: генераторы
Рабочая группа (TC-39) имеет общее согласие с тем, что EcmaScript.next должен иметь какое-то предложение итератора генератора, но это не final.
Вы не должны полагаться на это, показывая его без изменений в следующей версии языка, и даже если он не изменится, он, вероятно, не будет широко отображаться в других браузерах для while.
Обзор
Первоклассные сопрограммы, представленные как объекты, инкапсулирующие приостановленные контексты выполнения (т. е. активация функций). Предшествующий уровень техники: Python, Icon, Lua, Scheme, Smalltalk.
Примеры
«Бесконечная» последовательность чисел Фибоначчи (несмотря на поведение около 253):
function* fibonacci() { let [prev, curr] = [0, 1]; for (;;) { [prev, curr] = [curr, prev + curr]; yield curr; } }
Генераторы могут быть повторены в циклах:
for (n of fibonacci()) { // truncate the sequence at 1000 if (n > 1000) break; print(n); }
Генераторы являются итераторами:
blockquote>let seq = fibonacci(); print(seq.next()); // 1 print(seq.next()); // 2 print(seq.next()); // 3 print(seq.next()); // 5 print(seq.next()); // 8
Мое решение для гибридного + веб-приложения.
после любой oData Прочитайте ......
var uriStr;
if (typeof sap.hybrid !== 'undefined') {
uriStr = oUserData.__metadata.uri;
}
else{
uriStr = window.location.href;
}
var split1 = uriStr.split("-"); // split by -
var secondSubString = split1[1]; // all characters AFTER the first -
var split2 = secondSubString.split("."); // split by .
self.subAccount = split2[0]; // all characters BEFORE the first .
Затем используйте self.subAccount в вызывающий URI.