сломанная библиотека sdl 2 на linux [дубликат]

Angular1

Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises.

Здесь it говорит,

Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.

Вы можете найти приятное объяснение здесь .

Пример, найденный в docs , упомянутом ниже.

  promiseB = promiseA.then(
    function onSuccess(result) {
      return result + 1;
    }
    ,function onError(err) {
      //Handle error
    }
  );

 // promiseB will be resolved immediately after promiseA is resolved 
 // and its value will be the result of promiseA incremented by 1.

Angular2 and Later

In Angular2, посмотрите на следующий пример, но его рекомендовал использовать Observables с Angular2.

 search(term: string) {
     return this.http
  .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`)
  .map((response) => response.json())
  .toPromise();

}

Вы можете использовать это таким образом,

search() {
    this.searchService.search(this.searchField.value)
      .then((result) => {
    this.result = result.artists.items;
  })
  .catch((error) => console.error(error));
}

См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.

Кроме того, здесь представлены обещания spec определите здесь.

31
задан Tibi 15 August 2012 в 20:42
поделиться

2 ответа

Пер Часто задаваемые вопросы по SDL Windows :

Вы должны использовать main() вместо WinMain(), даже если вы создаете приложение Windows, поскольку SDL обеспечивает версию WinMain(), которая выполняет некоторую инициализацию SDL перед вызовом вашего основного кода.

Если по какой-то причине вам нужно использовать WinMain(), посмотрите исходный код SDL в src/main/win32/SDL_main.c, чтобы увидеть какую инициализацию вам нужно выполнить в вашей функции WinMain(), чтобы SDL работал правильно.

SDL требует инициализации, поэтому он вводит свою собственную функцию main, которая запускает свою инициализацию перед вызовом ваша «основная» функция, которую она переименовывает в SDL_main, чтобы она не противоречила фактической функции main. Как отмечено в FAQ, ваша функция main должна иметь вид

int main(int argc, char* argv[])
31
ответ дан James McNellis 5 September 2018 в 08:17
поделиться

Хотя я согласен с тем, что это странная практика, бывают ситуации, когда это разумное решение, хотя оно во многом зависит от платформы. Учтите, что разные платформы имеют разные точки входа. Windows обычно является WinMain, Linux является основным, взаимодействие с Android происходит в Java, WinRT использует расширения C ++ / CX и так далее. Точка входа в программу и API-интерфейсы могут быть очень специфичными для платформы, и SDL пытается избавить вас от необходимости иметь дело с этим. Если вы ориентируетесь только на Windows и SDL, это только для того, чтобы избавить вас от работы с WIN32 API, вам может и не понадобиться. Но если вы когда-нибудь выйдете за пределы рабочего стола, вы найдете это полезным, на мой взгляд.

5
ответ дан Mel 5 September 2018 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: