exchange.Go-return
exchange.Go函数返回的并发对象,用wait()方法取得并发调用的结果。HttpQuery_Go()、Mail_Go()返回的并发对象也有wait()方法,返回值见各自的函数页,结果被取走后再次调用wait()的处理与下表相同(Python的HttpQuery_Go返回None)。
属性
| 名称 | 类型 | 描述 |
wait(timeout) | function | 等待并取出并发调用的结果。 |
参考
备注
任务完成后,并发对象不再被引用时结果自动释放;一直持有并发对象而不取结果,结果不会释放。未取结果的并发任务达到2000个时,再调用exchange.Go()会报错too many routine wait, max is 2000。
wait()在各语言中的返回值:
| 情况 | JavaScript | Python | Rust |
|---|---|---|---|
| 完成 | 调用的返回值(调用失败时为null) | (返回值, True);调用失败时为(None, False) | Ok(返回值) |
| 超时(任务未完成) | undefined | (None, False) | Err |
| 结果已被取走后再次调用 | 抛出异常routine N already finished | 记录错误并返回(None, False) | Err |
超时后可以继续调用wait()等待。JavaScript判断超时要用typeof(r) === "undefined",因为null == undefined成立。