byancode/promise

此包最新版本(dev-main)没有可用的许可证信息。

Promise 异步

dev-main 2021-05-28 00:40 UTC

This package is auto-updated.

Last update: 2024-09-28 08:17:50 UTC


README

安装

您可以通过 composer 安装此包

composer require byancode/promise

用法

use Byancode\RequestCurl;
use Byancode\Promise;

new Promise(function ($promise) {
    if (true) {
        echo 'hola mundo';
        $promise->resolve([
            'success' => true
        ]);
        echo 'esto no se imprime';
    } else {
        echo 'se produjo un error';
        $promise->reject('es un error');
        echo 'esto no se imprime';
    }
})->then(function ($data) {
    print_r($data)
})->catch(function ($message) {
    echo $message;
});

请求 promise

Promise::create(function ($promise) {
    RequestCurl::http()->get(
        'http://google.com/',
    )->then(function($content) use ($promise) {
        $content = str_replace('div', 'my-div');
        $promise->resolve($content);
    })->catch(function() use ($promise) {
        $promise->reject('se produjo un error');
    });
})->then(function ($data) {
    print_r($data)
})->catch(function ($message) {
    echo $message;
})->run();

请求并跟踪 promise

RequestCurl::trace(function(){

    new Promise(function ($promise) {
        RequestCurl::http()->get(
            'http://google.com/',
        )->then(function($content) use ($promise) {
            $promise->wrap(function($promise) use ($content) {
                $content = str_replace('div', 'my-div');
                $promise->resolve($content);
            });
        })->catch(function() use ($promise) {
            $promise->wrap(function($promise) {
                $promise->reject('se produjo un error');
            });
        });
    })->then(function ($data) {
        print_r($data)
    })->catch(function ($message) {
        echo $message;
    });

    new Promise(function ($promise) {
        RequestCurl::http()->get(
            'http://youtube.com/',
        )->then(function($content) use ($promise) {
            $promise->wrap(function($promise) use ($content) {
                $content = str_replace('div', 'my-div');
                $promise->resolve($content);
            }):
        })->catch(function() use ($promise) {
            $promise->wrap(function($promise) {
                $promise->reject('se produjo un error');
            });
        });
    })->then(function ($data) {
        print_r($data)
    })->catch(function ($message) {
        echo $message;
    });

});