xhawk18 / promise-cpp

C++ promise/A+ library in Javascript style.
MIT License
672 stars 92 forks source link

all()怎么获得之前每个Defer的返回值? #9

Open mlkt opened 4 years ago

mlkt commented 4 years ago

有没有例子? js里面是给then的参数是数组[value1, value2]

const makeRequest = () => { return promise1() .then(value1 => { return Promise.all([value1, promise2(value1)]); }) .then(([value1, value2]) => { return promise3(value1, value2); }); };

xhawk18 commented 4 years ago

和js差不多,all 返回的Defer对象调用 then,参数是个 std::vector 数组。 pm_any可以包含任意类型的对象。

mlkt commented 4 years ago

建议判断下是不是C++17,是的话就用std::any,不是的话再用pm_any吧 或者 using pm_any = std::any 类似这样

xhawk18 commented 4 years ago

建议判断下是不是C++17,是的话就用std::any,不是的话再用pm_any吧 或者 using pm_any = std::any 类似这样

还有tuple,应该也可以改用标准库的。

主要原因是any/tuple涉及到一点类型推导,resolve/reject填入的参数要被后面的then匹配的函数抓到,匹配函数类型这里定制了一些 any/tuple的内容,我有些迁移不动,太复杂。