可观察到的Angular形式的valueChanges可以这种形式使用:
import time
def ll(a):
return all(x in "0123456789.+-" for x in a)
def countdot(text):
count = 0
for c in text:
if c == '.':
count = count + 1
return count
def countminus(text):
count = 0
for c in text:
if c == '-':
count = count + 1
return count
def a1():
a = input("Wprowadz pierwszą liczbę: ")
err = True
while err == False:
if ll(a)== True and a != "." and a != "-" and a != "+" and countdot(a) <= 1 and countminus(a) <= 1:
a = float(a)
err = True
else:
print("To nie liczba!")
b = input("Wprowadz pierwszą liczbę: ")
return a
def b1():
err = True
b = input("Wprowadz drugą liczbę: ")
while err == True:
if ll(b)== True and b != "." and b != "-" and b != "+" and countdot(b) <= 1 and countminus(b) <= 1:
b = float(b)
err = False
else:
print("To nie liczba!")
b = input("Wprowadz drugą liczbę: ")
return b
repeat = True
while repeat == True:
print("Prosty Kalukator. Wybierz działanie: ")
print("Dodawanie: +, Odejmowanie: -, Mnożenie: *, Dzielenie: /")
d = input()
while d != "+" and d != "-" and d != "*" and d != "/" :
print("Błąd! Dodawanie: +, Odejmowanie: -, Mnożenie: *, Dzielenie: /")
d = input()
if d == "+" :
a = a1()
b = b1()
print("Wynik działania to: ")
p = a + b
p = float(p)
print(p)
在这种情况下,我是否需要担心取消订阅?使用forEach,我的代码中没有显式的subscribe()。这是否意味着rx.js或angular将处理退订?
答案 0 :(得分:0)
我认为这里不需要取消订阅,因为没有初始订阅。如果您使用的是以下内容,则需要退订。
public sub = new Subscription(); // import from rxJS
this.sub.add(form.valueChanges.subscribe(data => {//some logic}));
public ngOnDestroy(): void
{
this.sub.unsubscribe();
}
form.valueChanges.forEach((v)=>console.log(v)); // no UnSub needed.
据我了解,大多数订阅都需要处理和取消订阅。如果不使用上述方法,HTTP方法将退订。
答案 1 :(得分:0)
forEach 在内部进行订阅,然后返回承诺。
有了这个承诺,您就无法退订。