在JavaScript中使用Promise时有些奇怪
我有一个返回承诺对象的函数。这是我的密码在JavaScript中使用Promise时有些奇怪,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我有一个返回承诺对象的函数。这是我的密码 var foo = function(){ // doSomething() is a promise object return doSomething().then(() => { Promise.resolve('Hello'); }); }; foo().then((res) => { console.log(res); // res = undefined but not "
var foo = function(){
// doSomething() is a promise object
return doSomething().then(() => {
Promise.resolve('Hello');
});
};
foo().then((res) => {
console.log(res);
// res = undefined but not "Hello"
});
我以为函数
foo
会返回promise对象,我会得到字符串“Hello”。但我没有定义。为什么?在Promise.resolve之前,您错过了一次退货,所以应该是这样
var foo = function(){
return doSomething().then(() => {
return Promise.resolve('Hello');
^^^^^^
});
};
但是,实际上您根本不需要它,只需返回字符串Hello即可
var foo = function(){
return doSomething().then(() => {
return 'Hello';
});
};
通过使用arrow函数的简洁体形式,省去了{}
,可以使它变得更简单
var foo = function(){
return doSomething().then(() => 'Hello');
};
你错过了承诺前的回报。解决,所以它应该是
var foo = function(){
return doSomething().then(() => {
return Promise.resolve('Hello');
^^^^^^
});
};
但是,实际上您根本不需要它,只需返回字符串Hello即可
var foo = function(){
return doSomething().then(() => {
return 'Hello';
});
};
通过使用arrow函数的简洁体形式,省去了{}
,可以使它变得更简单
var foo = function(){
return doSomething().then(() => 'Hello');
};
您缺少
承诺之前的返回
。解决
。但是,实际上您根本不需要它,只需返回字符串Hello
。您可以使用箭头函数的简洁体形式,省去{}
,只需说,然后(()=>'Hello')
,使它变得更简单。谢谢,它可以工作并且看起来更好。你能展示你的doSomething
方法吗?@timothyclifford根据定义doSomething
的实现与此代码的行为无关,只要它返回OP已经声明的承诺。你缺少承诺之前的返回
。但是,实际上您根本不需要它,只需返回字符串Hello
。您可以使用箭头函数的简洁体形式,省去{}
,只需说,然后(()=>'Hello')
,使它变得更简单。谢谢,它工作起来,看起来更好。你能展示一下你的doSomething
方法吗?@timothyclifford根据定义,doSomething
的实现与此代码的行为无关,只要它返回OP已经声明的承诺。