代码在这里:
function square() {
let record = 10;
new Promise(function(resolve, reject) {
// A mock async action using setTimeout
setTimeout(function() { resolve(record); }, 3000);
})
.then(function(data) {
console.log('first then: ', data);
return data * data;
});
return record;
}
function submit() {
// ...
const result = square(); // => still 10
// finalHandler(result);
}
submit();
我使用setTimeout来模拟我必须提供的一个异步过程。当我调用submit时,result
传递给finalHandler
仍然是初始值10.但是我更新的结果是什么,即100。如何修改square
和submit
功能?
答案 0 :(得分:1)
您需要通过返回promise来使square
异步:
function square() {
let record = 10;
return new Promise(function(resolve, reject) {
// A mock async action using setTimeout
setTimeout(function() { resolve(record); }, 3000);
})
.then(function(data) {
console.log('first then: ', data);
return data * data;
});
}
function submit() {
// ...
square()
.then(result => finalHandler(result);
}
submit();