:내부 함수/스트림 수신기 내부에서 함수 값을 반환하는 방법은 무엇입니까?
Future<bool> delete() {
Transaction tx = db.transactionStore(storeName, "readwrite");
ObjectStore os = tx.objectStore(storeName);
os.delete(_key); // returns blank future, modifies tx
// This is not correct, but shows the idea:
if (tx.onComplete) {return true;}
if (tx.onError) {return false;}
}
이를 함수는 인덱스 된 DB에 저장하고로드하는 데 사용하는 클래스의 메서드입니다. 삭제 작업이 성공 또는 실패 할 때 true
또는 false
을 반환하거나이 객체를 포함하는 Future 객체를 반환하려고합니다. 그러나 병목 현상은 os.delete(_key);
입니다. 미래를 반환하지만 삭제 작업의 실제 성공 또는 실패는 tx.onComplete
및 tx.onError
에 의해 제공됩니다. 내부 당신이 볼 수 있듯이 나는 익명 함수를 만들 때
tx.onComplete.listen((e){
return_to_outer_function(true);
});
tx.onError.listen((e){
return_to_outer_function(false);
});
return_to_outer_function(bool) {
return bool; // doesn't work
}
는, return 문은 더 이상 방법을 완료하지만, 이러한 객체 모두 스트림, 그래서 그들로부터 이벤트를 처리하지 익명 함수를 작성해야 기능. 내부 함수가 다른 함수를 호출하도록 할 수는 있지만 다른 함수는 결과를 전체 메소드로 리턴하지 않는 자체의 return 문을가집니다.
임시 변수를 설정하고 주기적으로 검사하는 접근법을 시도했지만 잠재적 인 버그뿐만 아니라 단일 스레드 이벤트를 사용하기 때문에 사용하지 않으려 고하는 매우 유쾌하지 않은 해결책입니다 고리.
내부 함수에서 외부 함수로 값을 반환 할 수 있습니까? 아니면 일련의 스트림에서 이벤트의 존재 또는 부재로 가치를 얻는 다른 방법이 있습니까? 아니면이 문제를 피할 수있는 IndexedDB를 사용하는 다른 방법이 있습니까?