Welcome Forex EA downloads & MT4/MT5 auto-trading resources — EAs, Gold EAs, quant tools and real-world automation.
Sign In Sign Up

Promise - MetaTrader 5 Library | MT5 EA Download - MetaTrader 5 Resources

author EAcpu | 3 reads | 0 comments |
npm mymql5-promise

Example of commitment :

 #include "timer.mqh"
#include "index.mqh"

blank initialization () {
new Promise(printAndTimoutResolve, "111" )
        .then(printAndReject, "222" ) // then - run if the previous promise was resolved. .ccatch(printAndResolve, "333" ) // ccatch - run if the previous promise was rejected . .ccatch(printAndResolve, "444" )
        .ccatch(printAndResolve, "555" )
        .then(printAndResolve, "666" )
        .finally(printAndResolve, "end" ) // Finally - run anything . destroy(); // Clear memory after executing all Promises. These Promises print ( "start" );

{
print ( "Promise to resolve all" + parameters);
}; Blank printAndTimoutResolve( Oolong promise ID, string previous result, string parameters) {
print ( "Print and timeout resolution" + parameters);
    Timer::setTimout(resolveByIdStr, 2000 , string (promiseId));
}; Blank is resolved by IdStr ( thin string id) { Promise::resolveById( Oolong (ID)); } Blank is printed and resolved ( Oolong promise ID, string previous result, string parameter) {
print ( "Print and solve" + parameters);
    Promise::resolveById(promiseId);
}; Blank print and reject ( Oolong promise ID, string previous result, string parameters) {
print ( "Print and reject" + parameters);
    Promise::rejectById(promiseId);
};


For example, promise:all:

 blank initialization () {
    Promise * list1[] = {
New promise (printAndTimoutResolve, "Promise 1" )
            .then(printAndTimoutResolve, "Commitment 1.1" )
        ,
New promise (print and reject, "Promise 2" ),
New promise (printAndTimoutResolve, "Promise 3" ),
    };

    Promise::all(List 1, promiseAllResolve) //Resolve if all promises are resolved.then (printAndResolve, "Promise::Everything is resolved" )
        .ccatch(printAndResolve, "Promise::Reject All" )
        . destroy(); //remove all promises //printAndTimoutResolve Promise 1 //printAndReject Promise 2 //printAndTimoutResolve Promise 3 //printAndResolve Promise::all returned rejected };


Commitment Example: Race:

blank initialization () {
    Promise * list2[] = {
New promise (printAndTimoutResolve, "Promise 1" )
            .then(printAndTimoutResolve, "Commitment 1.1" )
        ,
New promise (print and reject, "Promise 2" ),
New promise (printAndTimoutResolve, "Promise 3" ),
    };

    Promise::race(list2, printAndResolve, "Promise::race" ) // Resolve/reject after first Promise .then(printAndResolve, "Promise::race resolved" )
        .ccatch(printAndResolve, "Promise::match rejected" )
        . destroy();

// printAndTimoutResolve Promise 1 // printAndReject Promise 2 // printAndTimoutResolve Promise 3 // Promise::race rejected };



For example, promise: any:

 blank initialization () {
    Promise * list3[] = {
New promise (printAndTimoutResolve, "Promise 1" )
            .then(printAndTimoutResolve, "Commitment 1.1" )
        ,
New promise (print and reject, "Promise 2" ),
New promise (printAndTimoutResolve, "Promise 3" ),
    };

    Promise::any(list3, printAndResolve, "Promise::any" )
        .then(printAndResolve, "Promise::any resolution" )
        .ccatch(printAndResolve, "Promise::any rejection" )
        . destroy();

// printAndTimoutResolve Promise 1 // printAndReject Promise 2 // printAndTimoutResolve Promise 3 // printAndResolve Promise::any // printAndResolve Promise::any resolved };



Attachment download

📎 index.mq5 (2.81 KB)

📎 timer.mqh (4.42 KB)

📎 index.mqh (13.9 KB)

Source: MQL5 #54412

Verification code Refresh