Что нужно помнить об асинхронности, так это о том, что любая функция с добавленной асинхронностью должна возвращать Обещание. getRecord должен вернуть то, что у вас есть. Кроме того, в то время как ваша внешняя функция testAsyncAwaitFunction является асинхронной, а ваш обратный вызов forEach - асинхронным, у вас нет ничего ожидающего разрешения ВСЕХ обещаний вашего forEach.
Вы хотите этот шаблон:
async function testAsyncAwaitFunction() {
let layerNames = await getCellLayers();
const promises = [];
layerNames.forEach(function(layerName) {
promises.push(getRecord(cell_date));
});
const cell_records = await Promise.all(promises);
cell_records.forEach(function(cell_record, idx) {
cell_date = layerNames[idx].substring(3)+"_"+window['currentImage'].substring(17,25);
console.log(cell_date+":");
console.log("Matches: "+cellRecord.length);
console.log("testAsyncAwaitFunction response: "+JSON.stringify(cellRecord));
})
}
Посмотрите этот ответ на другой вопрос для некоторой информации, о том, почему редко существуют любые хорошие эмпирические исследования на любых аспектах создания программного обеспечения.
Научный? Ну, я очень впечатлен работы Alistair Cockburn. Слушайте его здесь
Alistair Cockburn был аппаратным разработчиком и исследователем в течение 16 лет, когда IBM попросила, чтобы он записал методологию для объектно-ориентированных проектов. Он провел прошлое десятилетие, учась и пишущий о разработке программного обеспечения и узнал, что некоторые самые успешные проекты имеют самые простые процессы. В 2001 он и 16 других тяжеловесов разработки программного обеспечения, встреченных для обсуждения так называемых легких методологий и одного результата, были Манифестом Гибкой разработки программного обеспечения, который включает четыре оператора значения: люди и взаимодействия по процессам и инструментам; рабочее программное обеспечение по подробной документации; клиентское сотрудничество по переговорам о заключении контракта; и ответ переключается в соответствии с планом.
Laurie Williams от NCSU опубликовал много действительно интересных исследований эффективности парного программирования и затем начал иметь дело с большим количеством фасетов гибких.
Для INSERT / UPDATE / DELETE краткий ответ - «Да». База данных должна будет проверить, что ссылочная целостность не нарушена и создание / изменение разрешено. Или, в случае DELETE, может потребоваться некоторое каскадирование.
Для SELECT на самом деле все наоборот. Внешние ключи имеют секретное дополнительное преимущество, показывая вам, где именно вы, скорее всего, будете выполнять сложные JOIN, и у них есть очень часто используемые поля. Это значительно упрощает работу по индексации, и вы можете практически гарантировать, что все ваши поля FK должны быть проиндексированы. Это делает операции SELECT намного быстрее.
Было проведено довольно много эмпирических исследований различных частей схватки. Я слышал, как Джефф Сазерленд ( http://jeffsutherland.com/scrum/ изобретатель схватки) в своих выступлениях упоминал множество конкретных исследований и наблюдений.Agile в целом - это просто обобщающий термин, предназначенный для умеренного удовлетворения различных политических групп. Не ждите, что эксперимент докажет что-нибудь общее в отношении «гибкости». Это слишком расплывчато, чтобы быть полезным.
Мне доказана статистическая неудача водопада, т. Е. научного управления применительно к разработке программного обеспечения. Agile как движение - всего лишь ответ на эти эмпирические данные (см., Например, отчеты CHAOS).
Я не думаю, что можно "доказать" такую вещь.
Я пойду еще дальше и скажу, что не думаю, что действительно возможно изучить этот вопрос. "Производительность разработки программного обеспечения" с таким исследованием. Именно поэтому все доказательства, которые мы когда-либо на самом деле должны иметь, - это то, что нам рассказывают опытные люди (и, к сожалению, у каждого свой взгляд на разные методологии).
Для этого есть простая причина. : люди совершенно разные. Соберите команду из 5 человек для проекта на несколько месяцев (что, я полагаю, больше, чем когда-либо удается большинству исследований; давайте посмотрим, как кто-то профинансирует несколько месяцев рабочего времени разработчика), и вы обязательно получите полное разные результаты. Проблема в, здесь невозможно разделить множество различных факторов:
И, вероятно, есть много других факторов.
Итак, я пытаюсь сказать: не верьте исследованиям, которые «доказали», что одна методология / инструмент / что-либо работает лучше, чем другие. Их практически невозможно сделать.
И вероятно, существует гораздо больше факторов.
Итак, я пытаюсь сказать: не верьте исследованиям, которые «доказали», что одна методология / инструмент / что-либо работает лучше, чем другие. Их практически невозможно сделать.
И вероятно, существует гораздо больше факторов.
Итак, я пытаюсь сказать: не верьте исследованиям, которые «доказали», что одна методология / инструмент / что-либо работает лучше, чем другие. Их практически невозможно сделать.
Нет, это не научно или иным образом доказано. «Доказать» это означало бы либо:
Аналитический подход неосуществим, поскольку мы здесь имеют дело с людьми, а не с простыми системами. Вы не можете формализовать команды и организации.
С другой стороны, эмпирические исследования были проведены, но результаты неубедительны. Роберт Гласс показывает некоторые интересные результаты, например, в своей книге Software Creativity 2.0
Так что нет, гибкость не доказана. Даже не близко. : -)
В этой статье анализируется рентабельность инвестиций (ROI) Agile vs Традиционные методы. Он основан на реальных результатах опубликованных исследований.
Из аннотации:
Рентабельность инвестиций в Agile-методы была в четыре раза больше , чем у дорогих традиционных методов, в два раза меньше, чем у недорогих, и у лучших Agile и традиционных методов Методы имеют равную рентабельность инвестиций.
Это интервью с Линдой Райзинг на InfoQ в некоторой степени отвечает на ваш вопрос. Она рассказывает об эффективности плацебо и наших убеждениях в медицине, а также о том, как эти же вещи могут иметь отношение к разработке программного обеспечения. По сути, мы в сообществе Agile даем себе «сахарную пилюлю»?
Отрывок из интервью
Наука - это эксперименты, удержание идеи в течение короткого периода времени и ее тестирование, а затем изучение результатов этого проверить, верна ли гипотеза. Это действительно то, чем занимается Agile. Agile - это небольшие эксперименты. Теперь я считаю, что все, что мы делаем, не только разработка программного обеспечения, но и наша жизнь, должно быть серией небольших экспериментов.
Мы привлекаем всех возможных заинтересованных лиц, мы привлекаем клиентов, мы привлекаем пользователей, тестировщики работают с разработчиками. Мы всегда внимательно изучаем эти сахарные пилюли. Действительно ли это работает? Как вы думаете? Вы довольны результатами? Это единственное, что нас спасает - сам Agile. Это серия небольших экспериментов.