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
}
所以这个返回不起作用,并且调用函数没有得到返回值
答案 0 :(得分:0)
根据文档(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'
答案 1 :(得分:0)
您能告诉我如何立即获得多个异步任务的响应,或者是否有办法检查是否所有异步任务都已完成。
您可能需要all()
function from Guzzle's promises library。
有更多的功能可以结合并反省承诺,看看源代码。