m-n, .
, :
:
(defun my-callback (&rest data)
(format t "Echo from callback: ~A~%" data)
(restart-case
(error "Some error parsing data...")
(just-continue () (prin1 "Continue..."))))
(defun my-errback (e)
(format t "Echo from errback: ~A~%" e))
(defun make-example-future ()
(let ((future (asf:make-future))) ;creating future
(as:delay
(asf:future-handler-case ;wrapping asf:finish
(asf:finish future
"Result data")
(t (e) (asf:signal-error future e)))) ;signal future an error
:time 2)
future))
(defun simple-test-2 ()
(let ((future (make-example-future)))
(format t "Is future?: ~A~%Finished?: ~A~%"
(asf:futurep future) (asf:future-finished-p future))
(asf:alet ((result future))
(asf:attach-errback future
(format t "Finished? ~A~%" (asf:future-finished-p future))
(asf:future-finished-p result)
(asf:attach result
:
? (as:start-event-loop
Is future?: T
Finished?: NIL
;<here we have a 2 sec pause>
Finished? T
Echo from errback: There is no applicable method for the generic function:
when called with arguments:
("Result data")
A) asf:alet .
, , asf:alet .
B) make-example-future asf:finish asf:future-handler-case
asf:signal-error .
, , errback.
.
, (asf:future-finished-p result)
future-handler-case, asf:alet ( , ).
C) (asf:future-finished-p result),
Is future?: T
Finished?: NIL
Finished? T
Echo from callback: (Result data) ;here is my data
Echo from errback: Some error parsing data... ;;here is my error
1
drakma-async future-handler-case, asf:finish.
, #2. , asf:alet . errback, .
. drakma-test, asf:alet, errback, . http-request let, alet.
#3: (future-finished-p), โโ errback.
#4 #5 my-callback: ,
cl-async , drakma. 7 (, drakma:http-request).
, # 4 # 5 , future-hander-case errback.
:
, drakma-async future-handler-case, , .
, , - .