В отличие от python, API JavaScript все асинхронные. Когда вы звоните get()
, он немедленно возвращается с обещанием, которое разрешается, когда работа завершена. then()
также возвращает обещание, как и catch()
. Вы возвращаете name
прежде, чем он когда-либо получит значение от обратного вызова, что происходит через некоторое время.
Если вы хотите написать функцию, позволяющую вызывающей стороне получать результаты некоторой асинхронной работы, вы должны вернуть обещание, которое разрешается с результатами этой работы, тогда вызывающая сторона может использовать then()
в этом обещании для прослушивания результаты.
По сути, вам нужно больше познакомиться с соглашениями, которые JavaScript использует для работы с асинхронной работой и обещаниями.
Ну, понятие довольно просто на самом деле. Я не повторю его здесь, но необходимо забрать любую книгу по дизайну ОС, и это будет объяснено там. Я рекомендую "Понятия Операционной системы" от Silberscahtz и Galvin - это - то, что я должен был использовать в Университете, и это хорошо.
Несколько вещей, что я могу думать о том, что знание Виртуальной памяти могло бы дать Вам:
Однако, все эти вещи имели бы использование только в довольно определенных сценариях. Действительно, 99% приложений не должны интересоваться об этом.
Добавленный: Тем не менее определенно хорошо знать все эти вещи, так, чтобы можно было определить такие сценарии, когда они возникают. Просто остерегайтесь - с питанием, прибывает ответственность.
Это - определенный неопределенный вопрос.
Путем можно использовать виртуальную память, в основном с помощью файлов с отображенной памятью. Посмотрите mmap () страница справочника для получения дополнительной информации.
Хотя, Вы, вероятно, используете его неявно так или иначе, поскольку любая динамическая библиотека реализована как отображаемый файл, и многие библиотеки базы данных используют их также.
Интерфейс для использования отображаемых файлов с высокоуровневых языков часто довольно неудобен, который делает их менее полезными.
Главные преимущества использования отображаемых файлов:
Некоторые недостатки:
Может быть 9 из 10 случаев, которые Вы не должны волновать по поводу управления виртуальной памятью. Это - задание ядра. Может быть в некоторых узкоспециализированных приложениях, делают необходимо настроить вокруг них.
Я знаю об одной статье, которая говорит об управлении памятью компьютера с акцентом на Linux [http://lwn.net/Articles/250967].Надеюсь, это поможет.
Для большинства приложений сегодня, программист может остаться не знать о работах памяти компьютера без любого вреда. Но иногда - например, случай, когда Вы хотите улучшить место своей программы - Вы действительно заканчиваете тем, что имели необходимость управлять памятью сами. В таких ситуациях зная то, как память разработана для работы, важно.
Другими словами, хотя можно действительно выжить без него, узнавание о виртуальной памяти только сделает Вас лучшим программистом.
И я думал бы, что статья Wikipedia может быть хорошим началом.
Если Вы обеспокоены производительностью - понимающий, что иерархия памяти важна.
Для небольших наборов данных, которые полностью содержатся в физической памяти, которую Вы должны быть обеспокоены кэшированием (получающий доступ к памяти от кэша намного быстрее).
При контакте с большими наборами данных - который может быть разбит на страницы из-за отсутствия физической памяти, необходимо стараться сохранить схемы доступа локализованными.
Например, если Вы объявляете матрицу в C (int a[rows][cols]
), это выделяется строками. Таким образом при сканировании матрицы, необходимо просканировать строками, а не столбцами. Иначе Вы будете подкачкой страниц те же данные в и много раз.
Другой проблемой является различие между грязными и достоверными данными, сохраненными в памяти. Достоверные данные являются информацией, загруженной из файла, который не был изменен программой. ОС может разбить на страницы достоверные данные (возможно, в зависимости от того, как она была загружена), не пишущий это в диск. Грязные страницы должны сначала быть записаны в файл подкачки.