这是我第一次尝试做出promise。我有一个工作的基本promise(从别人的代码中剽窃),但不知道如何调整它以使其有用。
到目前为止我所拥有的(在我的render()函数中)
var promise = new Promise( (resolve, reject) => {
let name = 'Dave'
if (name === 'Dave') {
resolve("Promise resolved successfully");
}
else {
reject(Error("Promise rejected"));
}
});
promise.then(function(result) {
console.log(result); // "Promise resolved successfully"
}, err => {
console.log(err); // Error: "Promise rejected"
});
果然,由于promise条件匹配(
name===“Dave”
),我的控制台日志promise已成功解析。
然而,我不知道在使用promise时如何给变量赋值。例如:
promise.then(function(result) {
var newName = 'Bob'
}, function(err) {
var newName = 'Anonymous'
});
然后,当我尝试返回这个值在
渲染()
的返回语句,像这样:
<h2>{newName}</h2>
它说newName是未定义的。
我也尝试过:
promise.then(function(result) {
var newName = result
}, function(err) {
var newName = error
});
…预期这会将
resolve
或error
字符串分配到newName
变量中,但不是。
我是不是想错了?当我的条件满足时,如何使它比只记录字符串更有用?
任何帮助都将不胜感激,因为这真的让我头疼。。。
render() {
var promise = new Promise( (resolve, reject) => {
let name = 'Paul'
if (name === 'Paul') {
resolve("Promise resolved successfully");
}
else {
reject(Error("Promise rejected"));
}
});
let obj = {newName: ''};
promise.then( result => {
obj["newName"] = result
}, function(error) {
obj["newName"] = error
});
console.log(obj.newName)
return (
<div className="App">
<h1>Hello World</h1>
<h2>{obj.newName}</h2>
</div>
);
}
匿名用户
你需要考虑你所处的范围。当你在传递给promise的函数中时,,你在一个新的块作用域中,因此你在函数中创建的任何变量都不会存在于它的作用域之外。我不确定如何定义React组件,但假设组件上有一个newName
变量,有两种方法可以解决范围问题—绑定和箭头函数:
promise.then(function(result) {
this.newName = result; //or what you want to assign it to
}.bind(this))
然后您可以使用{this.newName}
或具有箭头功能:
promise.then((result) => {
this.newName = result; //or what you want to assign it to
}.bind(this))
我建议您观看此egghead视频,以帮助您理解javascript中的this
关键字。
您正在以错误的方式使用React
。一个Promise
被设计为在稍后的时间点返回结果。当您的promise得到解决
或拒绝
时,您的呈现
将已完成执行,并且在promise完成时不会更新。
render
方法应仅依赖props
和/或state
来呈现所需的输出。对prop
或状态的任何更改都将
重新呈现组件。
>
首先,确定您的Promise
在组件的生命周期中应该去哪里(这里)
在你的情况下,我会做以下事情
>
初始化构造函数(ES6)内部的状态,或者通过get初始状态
constructor(props) {
super(props);
this.state = {
name: '',
};
}
然后在componentWillMount
或componentDidMount
上,如果您觉得合适,请在那里调用promise
componentWillMount() {
var promise = new Promise( (resolve, reject) => {
let name = 'Paul'
if (name === 'Paul') {
resolve("Promise resolved successfully");
}
else {
reject(Error("Promise rejected"));
}
});
let obj = {newName: ''};
promise.then( result => {
this.setState({name: result});
}, function(error) {
this.setState({name: error});
});
}
然后在render
方法中编写类似的代码。
render() {
return (
<div className="App">
<h1>Hello World</h1>
<h2>{this.state.name}</h2>
</div>
);
}
本文向大家介绍jQuery实现一个简单的轮播图,包括了jQuery实现一个简单的轮播图的使用技巧和注意事项,需要的朋友参考一下 html代码: css代码: js代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
本文向大家介绍如何简单的实现一个promise?相关面试题,主要包含被问及如何简单的实现一个promise?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 首先明确什么是promiseA+规范,参考规范的地址:primise A+规范 如何实现一个promise,参考我的文章: 实现一个完美符合Promise/A+规范的Promise 一般不会问的很详细,只要能写出上述文章中的v1.0版本
我正试图用Java编写一个非常简单的merkle树实现。 我使用比特币区块链上方框170中的TXID值作为参考,因此我可以看到正确的结果。 与该块对应的TXID如下所示: 据我了解,比特币的merkle树实现方式如下: 将块中的事务拆分为成对的事务 有一个警告是: 我的代码在一个开关语句中,它看起来像这样: 我编写的swapEndianness方法不是真正的“字节级”交换,而是更改字符串的顺序,如
本文向大家介绍如何实现Java中一个简单的LinkedList,包括了如何实现Java中一个简单的LinkedList的使用技巧和注意事项,需要的朋友参考一下 LinkedList与ArrayList都是List接口的具体实现类。LinkedList与ArrayList在功能上也是大体一致,但是因为两者具体的实现方式不一致,所以在进行一些相同操作的时候,其效率也是有差别的。 对于抽象的数据结构——
我是使用Dagger2的新手(我一直使用Koin),我正在尝试实现一个简单的示例,但我真的不知道我缺少了什么。这就是我目前得到的。 app.gradle: 应用模块。kt: AppComponent。kt: TestClass。千吨 pp.kt: MainActivity.kt: 错误:testClass==null
本文向大家介绍使用wxpython实现的一个简单图片浏览器实例,包括了使用wxpython实现的一个简单图片浏览器实例的使用技巧和注意事项,需要的朋友参考一下 上次我爬了n多图片,但是浏览的时候有一个问题。 图片浏览器的浏览一般都是按名称排的,而我对图片的命名是按照数字递增的。比如3总是会排在10后面,也就无法快速地浏览图片了。 所以,出于方便自己查阅图片,也出于学习,决定做一个自己的图片浏览器。