Javascript 我的代码在按下按钮之前运行

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(

我的代码有问题。要运行算法, 我创建了一个按钮,我希望它在我按下后运行, 但是发生的是算法运行 然后按钮运行并显示返回值。整个算法在Demopipeline.js中。有什么想法吗

导入。。。
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()中的代码运行吗?tow
console.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 () {
    //..
}