这些基本/promise-async-await

基于生成器和yield的async-await模拟

1.0.1 2020-01-31 22:31 UTC

This package is auto-updated.

Last update: 2024-09-20 22:28:10 UTC


README

ReactPHP的async-await模拟器,使用生成器和yield

安装

composer require thesebas/promise-async-await

用法

这使得可以编写

asyncRun(function ($init) {
    $res = yield asyncFunc($init);
    $res2 = yield all([asyncFunc($res + 1), asyncFunc($res + 1)]);
    $res3 = yield race([asyncFunc($res * 2), asyncFunc($res2 / 2)]);
    return "wow" . $init . $res . $res2 . $res3;
}, 0.1)->then(function ($result) {
    // ... $result is eq "wow".$init.$res.$res2.$res3;
});

而不是

$init = 0.1;
asyncFunc($init)->then(function ($res) {
    return all([asyncFunc($res + 1), asyncFunc($res + 1)]);
})->then(function ($res2) {
    return yield race([asyncFunc(/* $res? */), asyncFunc($res2 / 2)]);
})->then(function ($res3) {
    return "wow" ./* $init? */ /* $res?*/ /* $res2?*/ $res3
})->then(function ($result) {
    // ... $result is eq "wow".$res3;
});

更多信息请参阅规范