Với Guzzle, lời hứa có cung cấp bất kỳ tiện ích thực sự nào không? Có vẻ như bạn phải chờ cuộc gọi(). Các mã sau đây (từ các tài liệu) dường như không làm gì cả bởi chính nó:Điểm mấu chốt của Guzzle async hứa hẹn là gì?
$promise = $client->requestAsync('GET', 'http://httpbin.org/get');
$promise->then(
function (ResponseInterface $res) {
echo $res->getStatusCode() . "\n";
},
function (RequestException $e) {
echo $e->getMessage() . "\n";
echo $e->getRequest()->getMethod();
}
);
Nếu bạn phải gọi $ promise-> chờ() để thực hiện yêu cầu, quan điểm của một lời hứa là gì? Điều này thực sự khác biệt như thế nào:
$request = new Request('GET', 'http://httpbin.org/get');
$response = $client->send($request);
if ($response
Tốt nhất tôi có thể nói, đó là cách tiếp cận thuận tiện để xác định yêu cầu gọi lại thành công và thất bại. Ngay cả phần doc trên thực hiện nhiều yêu cầu có mã dưới đây, xuất hiện để chặn và thực hiện tất cả các yêu cầu ... có lẽ tại cùng một thời điểm "". Đây có phải là tất cả những gì tôi mong đợi không?
// Wait on all of the requests to complete.
$results = Promise\unwrap($promises);
Là async chính xác đồng nghĩa với xử lý trì hoãn? –
Câu hỏi hay và có thể không. Thực sự tôi bối rối hơn bởi phần lời hứa của nó. – originalbryan
Tôi không tin rằng PHP có khả năng xử lý sự kiện thực sự không đồng bộ (chưa), do đó cuộc gọi đến 'wait()'.Vì vậy, có thể có một số sự thật rằng một số lợi ích bạn thấy trong Javascript không hiển nhiên trong phiên bản PHP của nó (chưa), nhưng mục đích của một lời hứa là bạn có thể truyền xung quanh một giao diện "chỉ đọc" vào trong trì hoãn mà không thể được giải quyết thông qua giao diện đó. Có lẽ đây là khả năng tương thích ngược (hiện tại). –