Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 正常值延迟计算的结束链_Web Scraping_Ocaml - Fatal编程技术网

Web scraping 正常值延迟计算的结束链

Web scraping 正常值延迟计算的结束链,web-scraping,ocaml,Web Scraping,Ocaml,我希望下面的函数获取url并使用lambdasoup返回一个soup节点,换句话说,我希望类型为:val do\u get:string->soup节点=。使用bind操作符(>>=)我可以等待计算完成,但这总是会返回另一个延迟的计算。我希望能够通过将延迟计算转换为正常值来结束链。我能做什么 let do_get url = let uri = Uri.of_string url in Cohttp_async.Client.get uri >>= fun (_, bo

我希望下面的函数获取url并使用
lambdasoup
返回一个soup节点,换句话说,我希望类型为:
val do\u get:string->soup节点=
。使用bind操作符
(>>=)
我可以等待计算完成,但这总是会返回另一个延迟的计算。我希望能够通过将延迟计算转换为正常值来结束链。我能做什么

let do_get url = 
  let uri = Uri.of_string url in
  Cohttp_async.Client.get uri
  >>= fun (_, body) -> 
    Cohttp_async.Body.to_string body
  >>= fun s -> parse s

您可以使用
Deferred.peek
将延迟值转换为正常值。如果你的程序需要调用
Scheduler.go
,大概是这样的
永不返回(Scheduler.go())

在现实世界的ocaml中有一章解释了如何使用异步库

您可以使用
Deferred.peek
将延迟值转换为正常值。如果你的程序需要调用
Scheduler.go
,大概是这样的
永不返回(Scheduler.go())

在现实世界的ocaml中有一章解释了如何使用异步库