欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

Promise - MetaTrader 5 库

author emer | 364 人阅读 | 0 人评论 |
npm 我 mql5-promise

承诺例子 :

 #包括“计时器.mqh”
#包括“索引.mqh”

空白 初始化时() {
    新的承诺(printAndTimoutResolve,“111”)
        .then(printAndReject,“222”// then - 如果前一个承诺得到解决则运行        .ccatch(printAndResolve,“333”// ccatch - 如果前一个承诺被拒绝则运行        .ccatch(printAndResolve,“444”)
        .ccatch(printAndResolve,“555”)
        .then(printAndResolve,“666”)
        .finally(printAndResolve,“结尾”// 最后 - 运行任何东西        。破坏();// 执行所有 Promise 后清除内存这些 Promise    打印“开始”);

    // printAndTimoutResolve 111 // 打印后超时    // 开始    // 打印并拒绝 222    // printAndTimoutResolve 333    // printAndTimoutResolve 666    // printAndTimoutResolve 结束};空白承诺全部解决(乌龙承诺 ID,细绳&上一个结果[],细绳参数){
    打印“承诺全部解决”+ 参数);
};空白printAndTimoutResolve(乌龙承诺 ID,细绳上一条结果,细绳参数){
    打印“打印和超时解决”+ 参数);
    定时器::setTimout(resolveByIdStr,2000年,细绳(promiseId));
};空白通过IdStr解析(细绳id) { Promise::resolveById(乌龙(ID)); }空白打印并解决(乌龙承诺 ID,细绳上一条结果,细绳参数){
    打印“打印并解决”+ 参数);
    Promise::resolveById(promiseId);
};空白打印并拒绝(乌龙承诺 ID,细绳上一条结果,细绳参数){
    打印“打印并拒绝”+ 参数);
    Promise::rejectById(promiseId);
};


例如,承诺:全部:

 空白 初始化时() {
    承诺* list1[] = {
        新的承诺(printAndTimoutResolve,《承诺1》)
            .then(printAndTimoutResolve,《承诺1.1》)
        ,
        新的承诺(打印并拒绝,《约定2》),
        新的承诺(printAndTimoutResolve,《约定3》),
    };

    Promise::all(列表1,promiseAllResolve)// 如果所有承诺都得到解决,则解决        .then(printAndResolve,“承诺::一切都解决了”)
        .ccatch(printAndResolve,“承诺::全部拒绝”)
        。破坏();//删除所有promise    // printAndTimoutResolve Promise 1    // printAndReject Promise 2    // printAndTimoutResolve Promise 3    // printAndResolve Promise::all returned 被拒绝};


承诺示例:种族:

 空白 初始化时() {
    承诺* list2[] = {
        新的承诺(printAndTimoutResolve,《承诺1》)
            .then(printAndTimoutResolve,《承诺1.1》)
        ,
        新的承诺(打印并拒绝,《约定2》),
        新的承诺(printAndTimoutResolve,《约定3》),
    };

    Promise::race(list2, printAndResolve,“承诺::比赛”// 在第一个 Promise 之后解析/拒绝        .then(printAndResolve,“承诺::比赛已解决”)
        .ccatch(printAndResolve,“承诺::比赛被拒绝”)
        。破坏();

    // printAndTimoutResolve Promise 1    // printAndReject Promise 2    // printAndTimoutResolve Promise 3    // Promise::race 被拒绝};



例如,承诺:任何:

 空白 初始化时() {
    承诺* list3[] = {
        新的承诺(printAndTimoutResolve,《承诺1》)
            .then(printAndTimoutResolve,《承诺1.1》)
        ,
        新的承诺(打印并拒绝,《约定2》),
        新的承诺(printAndTimoutResolve,《约定3》),
    };

    Promise::any(list3, printAndResolve,“承诺::任何”)
        .then(printAndResolve,“承诺::任何解决”)
        .ccatch(printAndResolve,“承诺::任何拒绝”)
        。破坏();

    // printAndTimoutResolve Promise 1    // printAndReject Promise 2    // printAndTimoutResolve Promise 3    // printAndResolve Promise::any    // printAndResolve Promise::any 已解决};



附件下载

📎 index.mq5 (2.81 KB)

📎 timer.mqh (4.42 KB)

📎 index.mqh (13.9 KB)

Source: MQL5 #54412

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录