Javascript 在我的示例中,如何从Promise返回变量
我对下一个代码有问题:Javascript 在我的示例中,如何从Promise返回变量,javascript,reactjs,promise,Javascript,Reactjs,Promise,我对下一个代码有问题: const Header = () => { let min = 0; let sec = 0; timeRemaining().then(res => { getCountdown(); const interval = setInterval(function() { getCountdown(); }, 1000); function getCountdown() { var curren
const Header = () => {
let min = 0;
let sec = 0;
timeRemaining().then(res => {
getCountdown();
const interval = setInterval(function() {
getCountdown();
}, 1000);
function getCountdown() {
var current_date = new Date().getTime();
var seconds_left = (res.data - current_date) / 1000;
let minutes = parseInt(seconds_left / 60);
let seconds = parseInt(seconds_left % 60);
if (minutes === 0 && seconds === 0) {
clearInterval(interval);
}
return {min = minutes sec = seconds}; // The poblem is here
}
});
return (
<div>
<p>{seconds}</p>
<p>{minutes}</p>
</div>
);
};
const头=()=>{
设min=0;
设sec=0;
剩余时间()。然后(res=>{
getCountdown();
const interval=setInterval(函数(){
getCountdown();
}, 1000);
函数getCountdown(){
var current_date=new date().getTime();
var seconds_left=(res.data-当前日期)/1000;
分钟=parseInt(剩余秒/60);
let seconds=parseInt(剩余%60秒);
如果(分钟===0和秒===0){
间隔时间;
}
return{min=minutes-sec=seconds};//问题在这里
}
});
返回(
{秒}
{分钟}
);
};
我想在我的问题中设置值min和sec,但不能。谢谢你的回答 好的,让我们看看您的代码,了解一些事情。 这里需要注意的第一件事是,您的组件
头
是一个功能组件
函数组件没有状态,它们被称为哑组件,因为它们只获取道具作为输入,并呈现一些东西作为输出。这是什么意思?这意味着在组件中使用承诺不会产生任何效果,因为您的承诺将在组件已经呈现之后得到解决
你能为解决这个问题做些什么?您可以使用,甚至更好,您可以使用来处理函数组件内部的状态。但请记住,在这两种情况下,您都应该为数据保留一个状态
需要注意的第二件事是,您的代码有一些错误: 在第一个
return
语句中,您将变量min
设置为从minutes
接收值,然后返回它。(第二个return语句无论如何都不会到达,因为第一个return将完成函数)
但是您的min
变量被声明为const
,因此您不能在声明后将值赋予它
此外,您还试图在声明它们的函数之外访问minutes
和seconds
。这是不可能的
结论: 您的代码的想法是正确的,但它的实现方式是错误的。试试我发给你的链接,你可能会在几分钟内以正确的方式解决这个问题
:)它们都是
const
,因此您无法设置它们。此外,您不能有两个return
语句-第一个语句将执行,函数结束-第二个语句将永远无法访问。异步调用.then()
中的回调,因此外部return
将已被调用。你需要使用<代码> UsestAuter()/代码>钩子来初始化<代码> min <代码>和<代码> SEC/<代码>,并异步设置,触发重新渲染。问题1:在一个承诺中解决的值只能在<代码>中。然后(或者Asicc/Acess,但不要考虑,这只是承诺的语法糖)…问题2:getCountdown函数位于setInterval回调中,因此任何返回值都不可用。。。。问题3:代码意味着您希望Header
在单个调用中每秒返回一个值,这是不可能的。您是否考虑过使用回调?您是否使用有状态的react组件作为类或函数+挂钩?您需要在类的生命周期事件或挂钩中初始化此进程。编辑说明:Functional
到Function