Вопрос был:
Как вернуть ответ от асинхронного вызова?
blockquote>, который может быть интерпретирован как:
Как сделать синхронный асинхронный код синхронным?
blockquote>Решение будет состоять в том, чтобы избежать обратных вызовов и использовать комбинацию Promises и async / await.
Я хотел бы привести пример для запроса Ajax.
(Хотя он может быть записан в Javascript, я предпочитаю писать его на Python и компилировать его в Javascript, используя Transcrypt . Это будет достаточно ясно.)
Позволяет сначала включить использование JQuery, чтобы
$
был доступен какS
:__pragma__ ('alias', 'S', '$')
Определить функцию, которая возвращает Promise, в этом случае вызов Ajax:
def read(url: str): deferred = S.Deferred() S.ajax({'type': "POST", 'url': url, 'data': { }, 'success': lambda d: deferred.resolve(d), 'error': lambda e: deferred.reject(e) }) return deferred.promise()
Использовать асинхронный код, как если бы он был синхронным:
async def readALot(): try: result1 = await read("url_1") result2 = await read("url_2") except Exception: console.warn("Reading a lot failed")
Если вы хотите, чтобы дата отображалась в 12-часовом формате с AM / PM, установите языковой стандарт в en_US.
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh:mm a"];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];
NSString *theTime = [dateFormatter stringFromDate: [NSDate date]];
NSLog(@"%@",theTime);
Попробуйте
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"HH:mm";
NSDate *date = [dateFormatter dateFromString:@"23:50"];//suppose take time 23:50
dateFormatter.dateFormat = @"hh:mm a";
NSString *DateString = [dateFormatter stringFromDate:date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hh:mm a"];
Установите полную дату с помощью этого форматирования. Я только что дал подсказку.