Javascript 我的代码在按下按钮之前运行
我的代码有问题。要运行算法, 我创建了一个按钮,我希望它在我按下后运行, 但是发生的是算法运行 然后按钮运行并显示返回值。整个算法在Demopipeline.js中。有什么想法吗Javascript 我的代码在按下按钮之前运行,javascript,button,react-native,Javascript,Button,React Native,我的代码有问题。要运行算法, 我创建了一个按钮,我希望它在我按下后运行, 但是发生的是算法运行 然后按钮运行并显示返回值。整个算法在Demopipeline.js中。有什么想法吗 导入。。。 const demoPipeline=require('./gaitApp/src/apps/demoPipeline'); 导出默认类runAlgos扩展组件{ 异步尝试(){ const newRun=wait demoPipeline.run(); log('this:'); console.log(
导入。。。
const demoPipeline=require('./gaitApp/src/apps/demoPipeline');
导出默认类runAlgos扩展组件{
异步尝试(){
const newRun=wait demoPipeline.run();
log('this:');
console.log(newRun);
}
render(){
返回(
欢迎来到这里!
);
}
}
您应该像这样使用函数来解决此问题:
try = async () => {
const newRun = await demoPipeline.run();
console.log('this is: ');
console.log(newRun);
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Button
color='yellowgreen'
title="Run Demopipeline"
onPress={this.try}
/>
</View>
);
}
try=async()=>{
const newRun=wait demoPipeline.run();
log('this:');
console.log(newRun);
}
render(){
返回(
欢迎来到这里!
);
}
如果将函数定义为箭头函数,则无需绑定它们。此模式应适用于:
class runAlgos extends Component {
let try = async () => {
// ..
}
render() {
return (
<View>
<Button
title=".."
onPress={this.try}
/>
</View>
);
}
}
但是这是一种糟糕的做法(性能受到影响,因为onPress会在每次重新渲染时创建一个新函数)您的意思是
demoPipeline.run()中的代码运行吗?towconsole.log也在运行吗?我在这里期望的只是执行try函数并在console中看到一些结果,但在我按下按钮之前,它执行demopipeline,不返回任何内容,按下按钮后,它再次执行所有内容并返回我想要的内容。我不希望它在我按下按钮之前做任何事情,虽然你所说的在代码设计的情况下可能是真的,但它不会改变结果,它仍然在我按下按钮之前执行所有操作,但是谢谢:)你使用onPress={this.try}
并且你的代码在你再次按下按钮之前执行?是的,这就是问题所在,我不能称之为“再次”,因为它是“第一次”,当我按下按钮时,它会再次运行。事实上,我再次测试了它,如果你像这样使用try
函数onPress={this.try}
这在你按下按钮之前不会运行。请尝试const
或var
,但是,let
在我身上完全可以工作,我不知道,但是在我的例子中,用var声明,let,const会抛出一个错误,如果你把所有的都删除,保持它为try=()=>…
会工作吗?考虑到它将成为一个全局变量try应该是一个函数而不是一个变量,onpress需要调用一个函数,因此它不接受let、var或let,或者?因为我想创建的是函数,即“try”,谢谢:)@cancan当你写var try=()=>{/*..*/}
时,try
是一个函数,而不仅仅是一个变量。读书,祝你好运
<Button title=".." onPress={() => this.try()} />
async try () {
//..
}