Обновление: Как сказал @Paulpro в комментариях, приведенный ниже ответ никогда не сработает, потому что код застрянет в бесконечном цикле. так что вам лучше пойти с обещаниями
Я советую, как @ happy-machine & amp; @bergur, лучше использовать обещания. но если вы хотите знать, как работает fs.readFileSync()
, прочитайте код модуля fs в исходном коде nodejs .
Вы обнаружите, что он выполняет do {} while()
, и вы можете сделать то же самое, чтобы синхронизировать свой асинхронный код, как этот
var rows;
executeQuery('SELECT * FROM table').then(
promiseResponse => {
rows = promiseResponse
}
)
do {
// nothing
} while(!rows) // rows is undefined
console.log('database query completed:', rows);
Вот фрагмент кода, который я использую.
UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);
И:
static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
int maxFontSize, int minFontSize) {
CGPoint point = CGPointMake(left, y);
UIFont *font = [UIFont systemFontOfSize:maxFontSize];
[text drawAtPoint:point forWidth:right - left withFont:font
minFontSize:minFontSize actualFontSize:NULL
lineBreakMode:UILineBreakModeTailTruncation
baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}
Хорошо, я понял. Во-первых, измените режим кодирования на kCGEncodingMacRoman. Во-вторых, вставьте под ним эту строку:
CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));
Устанавливает матрицу преобразования для текста, чтобы он отображался правильно. Если вы не вставите эту строку, ваш текст будет перевернут и перевернут. Понятия не имею, почему это не было по умолчанию. Наконец, убедитесь, что вы установили правильный цвет заливки. Это легко сделать, если вы забудете изменить цвет фона на цвет текста и в итоге получите белый текст на белом фоне.