Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个简单的JS承诺会返回一个承诺?_Javascript_Promise_Es6 Promise - Fatal编程技术网

Javascript 为什么这个简单的JS承诺会返回一个承诺?

Javascript 为什么这个简单的JS承诺会返回一个承诺?,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,一个非常简单的问题。我已经把它归结为最简单的版本来说明我的问题 为什么这个香草JS会回复一个承诺,我如何才能让它回复“你好” 让结果=测试() .然后(函数(结果){ 返回结果; }); 警报(结果); 功能测试(序列化){ 返回新承诺(功能(解决、拒绝){ 解决(“你好”); }); }发生的情况是,您正在“警告”由然后方法返回的值 then方法将始终返回一个承诺,即使您正在返回一个值,它也被封装在一个已解析的承诺中(例如promise.resolve('Hello')),这允许您实现链接

一个非常简单的问题。我已经把它归结为最简单的版本来说明我的问题

为什么这个香草JS会回复一个承诺,我如何才能让它回复“你好”


让结果=测试()
.然后(函数(结果){
返回结果;
});
警报(结果);
功能测试(序列化){
返回新承诺(功能(解决、拒绝){
解决(“你好”);
});

}
发生的情况是,您正在“警告”由
然后
方法返回的值

then
方法将始终返回一个承诺,即使您正在返回一个值,它也被封装在一个已解析的承诺中(例如
promise.resolve('Hello')
),这允许您实现链接性,例如您可以在
then
回调中调用并返回其他承诺,他们将等待决议的继续和解决

test()
.然后(函数(结果){
控制台日志(结果);
返回结果+world!';
}).then(函数(结果2){
console.log(result2);//你好,世界!
返回新承诺(函数(resolve){resolve('End')});
}).然后(函数(结果){
控制台日志(结果);
})
功能测试(序列化){
返回新承诺(功能(解决、拒绝){
解决(“你好”);
});
}
承诺。然后((result)=>{})
始终返回另一个承诺,以便我们可以链接多个
.then()
调用

我怎样才能让它回复“你好”
:为此,你必须等待一个承诺

例如:
alert(await test())
问题是您只能在异步函数中使用await

另一个选择是在该时间内发出警报。
test()。然后((结果)=>alert(结果))

你说的“返回承诺”是什么意思?您希望实现什么行为?只需使用:-
(async()=>{alert(await test())})()
测试中获取结果。
。。!