请教正确的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);
};Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
对比一下ES6 =》 ES5后,第一种很第二种写法的区别,主要是promise是否return
//----------------case 1------------------------------- var apiFunction = function apiFunction() { return Promise.resolve().then(function () { return demoResolve(); }).then(function () { return demoReject(); }).then(function (data) { // bug AL.Promise.resolve(data); }).catch(function (err) { // bug AL.Promise.reject(err); }); }; //---------------------------case2-------------------------------- var apiFunction2 = function apiFunction2() { return Promise.resolve().then(function () { return doResolve(); }).then(function () { return doReject(); }) // okay √ .then(function (data) { return Promise.resolve(data); }) // okay √ .catch(function (err) { return Promise.reject(err); }); };第三种和第一种的区别也是是否return
第一个写法的AL.哪儿来的