function myfunc($finalArray){
$url = "https://reqres.in/api/users";
$client = new GuzzleHttp\Client();
$countOfSuccess = 0;
$request = new \GuzzleHttp\Psr7\Request('POST', $url);
$promise = $client->sendAsync($request)->then(function ($response) use ($finalArray,$countOfSuccess) {
$countOfSuccess ++ ;
echo $countOfSuccess;
echo count($finalArray);
if(myresponse is valid){
return "Successfully"; // Want to return from there
}
});
$promise->wait();
}
下面是返回的if条件。调用将在if内部进行
if(myresponse is valid){
return "Successfully"; // Want to return from there
}
因此,此返回不起作用,调用函数不会获得返回值
发布于 2018-03-05 17:21:44
根据文档(https://github.com/guzzle/promises#synchronous-wait),您应该能够执行以下操作:
$promise = $client->sendAsync($request);
$promise->then(function ($response) use ($finalArray,$countOfSuccess, &$promise) {
$countOfSuccess ++ ;
echo $countOfSuccess;
echo count($finalArray);
if(myresponse is valid){
$promise->resolve('Success');
}
});
echo $promise->wait(); // should return 'Success'
发布于 2018-03-07 01:35:05
你能告诉我如何一次获得多个异步任务的响应吗?或者有没有可能检查所有异步任务是否都完成了。
您可能需要all()
function from Guzzle's promises library。
有更多的函数来组合和反省promises,看看源代码。
https://stackoverflow.com/questions/49106203
复制相似问题