请教正确的promise用法!!!
下面是错误的写法 最后没有return的结果就是 调用这个API函数拿不到promise
const apiFunction = () => { return Promise.resolve() .then(() => (demoResolve())) .then(() => (demoReject())) .then((data) => { // bug Promise.resolve(data); }) .catch((err) => { // bug Promise.reject(err); }); };
改进后下面这个promise方法能够如预期的拿到promise的值
const apiFunction = () => { return Promise.resolve() .then(() => (doResolve())) .then(() => (doReject())) // okay √ .then((data) => Promise.resolve(data)) // okay √ .catch((err) => Promise.reject(err)); };
之后又尝试了一种写法,感觉这种写法和第一种写法没有什么区别,但是这样也写也是可以得到正确结果的。
请问这是什么情况呢?
这样写有错误吗?
const apiFunction = () => { return Promise.resolve() .then(() => (doResolve())) .then(() => (doReject())) .then(Promise.resolve) .catch(Promise.reject); };
对比一下ES6 =》 ES5后,第一种很第二种写法的区别,主要是promise是否return
第三种和第一种的区别也是是否return
第一个写法的AL.哪儿来的