我对2之间的区别(如果有的话)和用例感到困惑。为什么有人会返回一个值?
var p1 = new Promise((resolve, reject) => {
return setTimeout(() => {
resolve('Success')
}, 2000);
});
p1.then((successVal) => console.log(successVal))
.catch((error) => console.log(error))

var p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Success')
}, 2000);
});
p1.then((successVal) => console.log(successVal))
.catch((error) => console.log(error))

编辑:包含以下代码,这是我实际看到的内容。
someFunc = (params) => {
if (!params) {
throw new Error('Invalid params');
}
return new Promise((resolve, reject) => {
return someOtherFunc(params, result => { // why return here? Does it matter?
resolve(result);
}, (code, message, error) => {
reject(error);
});
});
};
根据我的理解,someFunc
是一个返回Promise
的函数,该函数稍后会被someOtherFunc
解析。为什么someOtherFunc
的返回值很重要?因为它的工作是调用resolve
或reject
处理程序?
答案 0 :(得分:3)
没有实际差异。传递给Promise的箭头函数称为executor,它返回的值将被忽略。 resolve
和reject
中返回的值是重要的值。
答案 1 :(得分:1)
根据我的理解,
someFunc
是一个将返回a的函数Promise
不一定是更新的问题中的代码,如果Promise
条件评估为if
且投放true
,则不会返回Error()
const someFunc = (params) => {
if (!params) {
throw new Error('Invalid params');
}
return new Promise((resolve, reject) => {
resolve(123)
});
};
someFunc()
.then(data => console.log(data)
// what happened to our error handling?
, err => console.error("err:", err.message));

if
条件应在Promise
执行函数范围内,错误可能会传递给reject()
,第二个参数为.then()
et或.catch()
处理可能的错误
const someFunc = (params) => {
return new Promise((resolve, reject) => {
if (!params) {
throw new Error('Invalid params');
}
resolve(123);
});
};
someFunc()
.then(data => console.log(data)
// handle error thrown within `Promise` constructor
, err => console.error("err:", err.message));

答案 2 :(得分:0)
如果要在变量中实例化新的Promise,则没有理由返回。你想要返回一些东西的唯一原因是在一个函数内。您将使用return返回附加到该函数的返回值。