Используйте let
вместо var
здесь:
Измените
var myId = this.state.siteid[i].id;
var myDaily = this.state.siteid[i].daily;
// ....
на
let myId = this.state.siteid[i].id;
let myDaily = this.state.siteid[i].daily;
// ....
var
is ограничен ближайшей функцией, а не блоком while
. Он поднимается, и ваш код будет выглядеть примерно так:
var i;
var myId;
var myDaily;
i = 0;
while ( i < 2 ) {
myId = this.state.siteid[i].id;
myDaily = this.state.siteid[i].daily;
}
Поскольку вызовы dataProvider
являются асинхронными, значение myId
будет заменено на значения AK
при первом вызове. .
dataProvider(GET_LIST, 'clicks', {
//
})
.then(response => this.setState({ [myWeekly]: response.data.count }))
/* ^^ This callback runs after the while block
By this time, myDaily === "AKdaily" */
Я использую ScriptSharp, как мы говорили, обнаружив его 2-3 недели назад. Честно говоря, я люблю это. Собственный Javascript - это сложная задача, а модель DOM делает программирование на стороне клиента еще хуже. Затем я обнаружил jQuery около шести месяцев назад и подумал, что это находка. jQuery увеличил мою производительность, но я все еще часто теряюсь из-за jQuery, потому что вам все еще приходится писать, отлаживать и настраивать Javascript.
Введите ScriptSharp. Это повысило мою производительность по сравнению с jQuery и значительно уменьшило мои головные боли. Самым большим преимуществом, которое я вижу, является тот факт, что возможности C # и Visual Studio принадлежат вам во время написания кода. Сила этого не может быть преуменьшена. Теперь мелкие маленькие ошибки Javascript, которые раньше занимали часы на отладку, устранены во время компиляции. Количество строк кода, вероятно, примерно вдвое больше, чем в jQuery, но производительность намного выше, так кого это волнует? Вы в основном просто пишете код, с гораздо меньшим количеством циклов компиляции / тестирования / отладки. Часы становятся минутами.
Я скажу, что сначала было довольно сложно заставить ScriptSharp работать с Microsoft AJAX, пока я не узнал об очень важном шаге , который вы должны предпринять, чтобы работать с ним. Я выдернул свои волосы на несколько дней, прежде чем я знал об этом. (Я полагаю, что это задокументировано в 61-страничном PDF-файле ScriptSharp, но его очень легко замаскировать.) Ключ в том, чтобы выбрать тип проекта "Script # Class Library внутри веб-сайта" (или «Библиотека классов MS Ajax внутри веб-сайта») при создании библиотеки ScriptSharp. Это помещает проект ScriptSharp в каталог Bin / Scripts веб-сайта и - , что очень важно - направляет скомпилированный вывод в этот каталог, а не в каталог «bin» по умолчанию проекта ScriptSharp. Возможно, пример будет поучительным:
Web Site or Application directory\
Bin\
Scripts\ <-- "..\\" config setting sends .js files here.
ScriptSharp Project directory\
Bin\ <-- will not be used at run time
Debug\ <-- will not be used at run time
Короче говоря, я нашел этот проект стоящим. Я собираюсь написать свой собственный HOW-TO (который в моем случае предполагает использование веб-элементов управления) о том, как связать все вместе, и опубликовать URL-адрес здесь. Теперь, когда я понял ScriptSharp, это сделало меня очень продуктивным в моей разработке RIA. Если бы только это было более заметно, и если бы только сайт CodePlex был все еще там.
Возможно, пример будет поучительным:Web Site or Application directory\
Bin\
Scripts\ <-- "..\\" config setting sends .js files here.
ScriptSharp Project directory\
Bin\ <-- will not be used at run time
Debug\ <-- will not be used at run time
Короче говоря, я нашел этот проект стоящим. Я собираюсь написать свой собственный HOW-TO (который в моем случае предполагает использование веб-элементов управления) о том, как связать все вместе, и опубликовать URL-адрес здесь. Теперь, когда я понял ScriptSharp, это сделало меня очень продуктивным в моей разработке RIA. Если бы только это было более заметно, и если бы только сайт CodePlex был все еще там.
Возможно, пример будет поучительным:Web Site or Application directory\
Bin\
Scripts\ <-- "..\\" config setting sends .js files here.
ScriptSharp Project directory\
Bin\ <-- will not be used at run time
Debug\ <-- will not be used at run time
Короче говоря, я нашел этот проект стоящим. Я собираюсь написать свой собственный HOW-TO (который в моем случае предполагает использование веб-элементов управления) о том, как связать все вместе, и опубликовать URL-адрес здесь. Теперь, когда я понял ScriptSharp, это сделало меня очень продуктивным в моей разработке RIA. Если бы только это было более заметно, и если бы только сайт CodePlex был все еще там.
Это делается во внутреннем классе
в сборке System.Web.Mvc
под названием System.Web.Mvc.ControllerTypeCache
].
Кстати, методы действия не обязаны возвращать ActionResult
. Например, они могут с радостью вернуть void
.
С некоторыми усилиями Visual Basic также можно использовать в качестве исходного языка. Компилятор jsc никогда не читает ваш исходный код, даже если GWT и Script # делают это. Мой компилятор читает ваш IL.
jsc compiler -
Последним примером является плазменная анимация, в которой одиночная реализация может использоваться между этими платформами:
(источник: sourceforge.net )
Точный сценарий Прототип: Microsoft GWT
Согласно этой странице:
Я не уверен, согласен ли я со всем этим, но в любом случае это шаг продаж. Похоже, это напечатано с некоторыми функциями ОО. Мнение следующее: Как я уже упоминал, разработчики Java и C #, похоже, хотят отказаться от прототипированных / нетипизированных аспектов Javascript, потому что им неудобно писать код таким образом. Нетипизированные языки прототипов имеют свое место.
В моей последней компании я очень широко использовал Script #. Мне удалось написать несколько классных элементов управления (фактически весь стек MVC на стороне клиента), которые я не смог бы сделать с моими знаниями javascript. Однако я бы не стал использовать его снова по нескольким причинам.
Инструментарий поскольку js только улучшается, и до тех пор, пока Script # не станет открытым, он остановится.
Если вы заинтересованы в кросс-компиляции, вы также можете взглянуть на http: //jsc.sourceforge. Проект net / , позволяющий использовать .net 3.5 и компилировать в JS, Java, Flash или даже PHP! Не уверен, насколько эффективен получаемый код ... Редактировать:
: есть новый проект под названием JSIL, который также переписывает .net-код в JS
Заинтересовавшись кросс-компиляцией, вы также можете взглянуть на проект http://jsc.sourceforge.net/ , который позволяет использовать .net 3.5 и компилировать в JS, Java, Flash или даже PHP. ! Не уверен, насколько эффективен получаемый код ... Редактировать:: есть новый проект под названием JSIL, который также переписывает .net-код в JS
Заинтересовавшись кросс-компиляцией, вы также можете взглянуть на проект http://jsc.sourceforge.net/ , который позволяет использовать .net 3.5 и компилировать в JS, Java, Flash или даже PHP. ! Не уверен, насколько эффективен получаемый код ... Редактировать:: есть новый проект под названием JSIL, который также переписывает .net-код в JS
Я хотел бы поделиться своими классами-обертками jQuery для Script#. Вы можете получить доступ и использовать мощные возможности jQuery в вашем проекте Script# прямо сейчас.
Получите их отсюда: http://www.springsys.com/blog/