Для людей, которые используют 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 определите здесь.
Вы не можете напрямую сравнивать два числа, которые имеют разные знаки. На самом деле большинство языков программирования имеют этот поток. C и C ++ специально упоминают, что в их документации и в большинстве случаев генерирует предупреждение, когда вы используете подписанное и целое число без знака в одном выражении, которое может привести к неизвестному знаку.
Единственный способ чтобы проверить, является ли подписанное число отрицательным, если это так, то вы знаете, что оно меньше. Затем вы можете сравнить два числа как целые числа без знака.
; is eax < ebx (eax signed, ebx unsigned)
cmp eax, $0
jl less
cmp eax, ebx
jc less
Боковое примечание: очевидно, можно сравнить два числа, подписанные, если их размер меньше максимального размера, поддерживаемого процессором. В этом случае вы соответствующим образом расширяете бит подписанного и неподписанного, тогда вы можете сравнить, как если бы оба значения были подписаны.
Предполагая, что вы хотите сравнить два байта al и bl, тогда вы могли бы что-то вроде этого :
movsx ax, al
xor bh, bh ; or movzx bx, bl
cmp ax, bx
jl less
(Заметьте, я не гарантирую, что jl верен, это может быть jle или jnl ...)
Вы , вероятно, , используя один из неподписанных вариантов, таких как:
cmp eax, ebx
jb lesser
Существуют эквиваленты для проверки подписанных чисел друг против друга, например:
cmp eax, ebx
jl lesser
Эта ссылка дает хороший пробег по вариациям прыжка, включая их подписанность и флаги, которые они проверяют, частично скопированные здесь для самоконденсации:
Instruction Jump if ... Signed? Flags
----------- ----------- -------- -----
JO overflow OF=1
JNO not overflow OF=0
JS sign SF=1
JNS not sign SF=0
JE/JZ equal
zero ZF=1
JNE/JNZ not-equal
not-zero ZF=0
JB/JNAE/JC below
not-above-or-equal
carry unsigned CF=1
JNB/JAE/JNC not-below
above-or-equal
no-carry unsigned CF=0
JBE/JNA below-or-equal
not-above unsigned CF=1 or ZF=1
JA/JNBE above
not-below-or-equal unsigned CF=0 and ZF=0
JL/JNGE less
not-greater-or-equal signed SF<>OF
JGE/JNL greater-or-equal
not-less signed SF=OF
JLE/JNG less-or-equal
not-greater signed ZF=1 or SF<>OF
JG/JNLE greater
not-less-or-equal signed ZF=0 and SF=OF
JP/JPE parity
parity-even PF=1
JNP/JPO not-parity
parity-odd PF=0
JCXZ/JECXZ CX register is zero
ECX register is zero