Promise 異步模式

2018-10-24 18:49 更新

PHP 的主要編程模式是同步方式,如果要在 PHP 中進(jìn)行異步編程,通常是采用回調(diào)的方式,因?yàn)檫@種方式簡單直接,不需要第三方庫的支持,但缺點(diǎn)是當(dāng)回調(diào)層層嵌套使用時,會嚴(yán)重影響程序的可讀性和可維護(hù)性,因此層層回調(diào)的異步編程讓人望而生畏。

回調(diào)的問題在 JavaScript 中更加明顯,因?yàn)楫惒骄幊棠J绞?JavaScript 的主要編程模式。為了解決這個問題,JavaScript 社區(qū)提出了一套 Promise 異步編程模型。Promise/A+(中文版)是一個通用的、標(biāo)準(zhǔn)化的規(guī)范,它提供了一個可互操作的 then 方法的實(shí)現(xiàn)定義。Promise/A+ 規(guī)范的實(shí)現(xiàn)有很多,并不局限于 JavaScript 語言,它們的共同點(diǎn)就是都有一個標(biāo)準(zhǔn)的 then 方法,而其它的 API 則各不相同。

Hprose 2.0 為了更好的實(shí)現(xiàn)異步服務(wù)和異步調(diào)用,也為 PHP 提供了一套 Promise 異步模型實(shí)現(xiàn)。它基本上是參照 Promise/A+(中文版) 規(guī)范實(shí)現(xiàn)的。

Hprose 2.0 之前的版本提供了一組 Future/Completer 的 API,其中 Future 對象上也提供了then 方法,但最初是參照 Dart 語言中的 Future/Completer 設(shè)計(jì)的。

而在 Hprose 2.0 版本中,我們對 Future 的實(shí)現(xiàn)做了比較大的改進(jìn),現(xiàn)在它既兼容 Dart 的Future/Completer 使用方式,又兼容 Promise/A+ 規(guī)范,而且還增加了許多非常實(shí)用的方法。下面我們就來對這些方法做一個全面的介紹。

注意:下面的例子中,為了突出重點(diǎn),代碼中均省略了:

<?php
require_once "vendor/autoload.php";
請讀者自行腦補(bǔ)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號