promise-cpp icon indicating copy to clipboard operation
promise-cpp copied to clipboard

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

Open mlkt opened this issue 5 years ago • 3 comments

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

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

mlkt avatar Apr 27 '20 20:04 mlkt

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

xhawk18 avatar May 02 '20 14:05 xhawk18

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

mlkt avatar May 11 '20 03:05 mlkt

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

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

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

xhawk18 avatar Jul 07 '20 08:07 xhawk18