我在反应APP中测试了ES6承诺,但我没有在我的.then上结果:
function addItem (value) {
return new Promise((resolve, reject) => {
document.getElementById('todo').innerHTML += `<li>${value}</li>`;
});
}
addItem(value).then(() => {
alert('then !');
}).catch((err) => {
console.log(err)
})
我的功能已执行,但我当时没有发生任何事件。
你知道我哪里错了吗?谢谢 ! :)答案 0 :(得分:1)
Promise用于异步任务。使用它们执行同步代码毫无意义。在您的示例中,then()
无效,因为您永远无法解决承诺。要解决此问题,您需要致电resolve()
。
答案 1 :(得分:0)
你需要在你的承诺中打电话拒绝或解决。
function addItem (value) {
return new Promise((resolve, reject) => {
document.getElementById('todo').innerHTML += `<li>${value}</li>`;
resolve();
});
}
答案 2 :(得分:0)
您需要解决您的承诺,例如:
function addItem (value) {
return new Promise((resolve, reject) => {
document.getElementById('todo').innerHTML += `<li>${value}</li>`;
resolve(10);
});
}
addItem(value).then((data) => {
alert('then !');
console.log(data);// 10
}).catch((err) => {
console.log(err)
})
答案 3 :(得分:0)
您忘了在Promise中调用resolve
和reject
函数。
resolve
是您完成操作后调用的功能。
resolve();
您传递给resolve()
的论据是您在then
函数中返回的内容。
reject
是您在行动中出现错误时调用的功能。如果你没有任何东西可以拒绝,那么你可以把它留下来,你不必打电话给它。
reject();
您传递给reject()
的论据是您在catch
函数中返回的内容。