只是第一次在 React 中尝试 Promises。我有一个基本的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 resolved successfully
.
但是,我不知道如何在使用 promise 时为变量赋值。例如:
promise.then(function(result) {
var newName = 'Bob'
}, function(err) {
var newName = 'Anonymous'
});
然后当我尝试在render()
的 return 语句中返回此值时,如下所示:
<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>
);
}