@Nc_Soft, это нормальная практика, настраивать одно окружение и шарить его через vagrant к примеру. В этом случае каждый проект будет в своей виртуалке.
а с чего вы взяли что ваши друзья строят свой процесс именно так? Быть может у них все так же автоматизировано. Я знаю людей которые для удобной работы в vim купили педали (ногами переключать режимы и еще какие хоткеи). Причем если потратить недельку на допиливание vim-а, можно получить ту же ide, только с меньшим набором функций.
Это на самом деле вопрос из разряда светное vs темное пиво. Каждый выбирает то, что ему нравится. Все зависит от того с чем работает человек, с масштабами работ и т.д.
@Nc_Soft, на винде с MinGW более чем нормально живется. Не так хорошо, конечно, как на linux, но все же жить можно. Правда изза некоторых мелочей всеравно в итоге люди перебираются на ubuntu/mint/debian...
@Losted, еще у некоторых IDE есть какой встроенный статический анализатор, для языков со статической типизацией помогает находить ошибки еще в процессе написания кода, переходы к определению вызываемой функции/метода... много всего. + плагины.
ИМХО, если проект не укладывается в 0,5К-1К строк, то стоит задуматься о IDE.
@wkololo_4ever ну так вы на первой итерации убрали из link метки (-1 и -2) и на следующих итерациях оно не может их найти и соответственно не может изменить.
@pygame, да, как-то не заметил этой пары слов. Тогда да, дублирования не избежать. Либо писать сервер на java и выносить общую логику в отдельные библиотеки.
Словом, я наконец понял что вы не понимаете, что $.ajax по умолчанию является асинхронным вызовом, и считаете что success должен вызываться внутри каждой итерации, а не после того как вы уже пробежались по циклу.
@wkololo_4ever, вам стоит отдохнуть и отвлечься. Мне просто лень писать одно и то же, получается какая-то рекурсия. Я даже не понимаю что именно вводит вас в заблуждение.
- вы вызываете вашу функцию GetNewTelephone
- делаете выборку по классу нужных эллементов на странице
- обходите эллементы в цикле
- отправляете запрос к серверу
- выходите из функции
Ответ от сервера, то что вы в success в настройках запроса прописысваете, будет вызываться столько раз, сколько итераций прошел цикл (при условии что все запросы успешны). Причем вызываться этот код будет уже после того, как вы выйдете из функции GetNewTelephone. А если быть точнее, вы в вашем цикле только создаете запрос, как только вы его создали цикл переходит на следующую итерацию не дожидаясь завершения запроса. Собственно для этого нам и нужно определять обработчик в поле success, для этого придумали обещания.
Если вы хотите, что бы в цикле новая итерация начиналась только по завершению запроса, то вам нужно выставить опцию async: false в настройках запроса. Но сразу скажу что это не правильно. Выполнять несколько запросов паралельно намного быстрее, и нужно учиться жить с асинхронным поведением.
предположим что number.length равно 4-ем. Тогда, во время прохождения по циклу, мы вызываем 4 запроса. То что вы задаете в success, это функция, которая будет вызвана, когда успешно выполнится запрос. То есть на КАЖДЫЙ запрос будет вызываться эта функция. Итого у нас 4 запроса, 4 раза вызывается функция.