Это одно из мест, с помощью которого привязка данных, используемая во многих новых фреймворках JavaScript, будет очень полезна для вас ...
Итак, если вы используете Angular, React или любые другие фреймворки, которые делают два способа связывания данных, эта проблема просто исправлена для вас, поэтому простым языком ваш результат undefined
на первом этапе, поэтому вы получили result = undefined
до получения данных, а затем, как только вы получите результат , он будет обновляться и присваиваться новому значению, которое отвечает на ваш вызов Ajax ...
Но как вы можете сделать это в чистом javascript или jQuery, например, как вы задали этот вопрос?
Вы можете использовать обратный вызов, обещание и недавно наблюдаемое, чтобы обрабатывать его для вас, например, в обещаниях мы имеем некоторые функции, такие как success () или then (), которые будут выполняться, когда ваши данные будут готовы для вас, с функцией обратного вызова или подписки на наблюдаемые.
Например, в вашем случае, в котором вы используете jQuery, вы можете сделать что-то вроде этого:
$(document).ready(function(){
function foo() {
$.ajax({url: "api/data", success: function(data){
fooDone(data); //after we have data, we pass it to fooDone
}});
};
function fooDone(data) {
console.log(data); //fooDone has the data and console.log it
};
foo(); //call happens here
});
Для получения дополнительной информации n изучение обещаний и наблюдаемых, которые являются новыми способами для создания асинхронных материалов.
Я попытался установить CMAKE_C_FLAGS
blockquote>Согласно документации ,
CMAKE_C_FLAGS
установил флаги языка C для всех типов сборки . Для C ++ вам нужно использоватьCMAKE_CXX_FLAGS
вместо:set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Для CMake 3.1 или более поздней версии вы можете установить переменную CMAKE_CXX_STANDARD
на 11
:
Значение по умолчанию для свойства
CXX_STANDARD
целевых объектов.Эта переменная используется для инициализации свойства
blockquote>CXX_STANDARD
для всех целей.Стандарт C ++, чьи функции запрашиваются для создания этой цели.
Это свойство указывает стандарт C ++, чьи функции запрашиваются для создания этой цели. Для некоторых компиляторов это приводит к добавлению в строку компиляции флага типа
-std=gnu++11
.Поддерживаемые значения: 98, 11 и 14.
Если запрашиваемое значение не приводит к при добавлении флага компиляции для используемого компилятора вместо этого будет добавлен предыдущий стандартный флаг. Это означает, что использование:
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
с компилятором, который не поддерживает
-std=gnu++11
или эквивалентный флаг, не приведет к ошибке или предупреждению, но вместо этого добавит флаг-std=gnu++98
, если он поддерживается. Это поведение «распада» можно контролировать с помощью целевого свойстваCXX_STANDARD_REQUIRED
.См. Руководство cmake-compile-features (7) для получения информации на компилируемых функциях.
Это свойство инициализируется значением переменной
blockquote>CMAKE_CXX_STANDARD
, если оно задано при создании цели.