遇到一些特殊问题,将不胜感激
// image Editor
function AddPic() {
var ret=loadpic();
console.log("retval=" + ret);
}
导入第一个的第二个文件
var retval;
function loadpic() {
//loads pictures in canvas frames and allow user to edit
return function doneOK() {
return retval;
};
}
function edit1() { retval=1;}
function edit2() { retval=2;}
function edit3() { retval=3;}
function edit4() { retval=4;}
function edit5() { retval=5;}
function edit6() { retval=6;}
//Depending on the user action different functions are called
//user can take any amount of time before clicking "OK"
function onlclickOK() {doneOK();}
<html>
<input type=button onclick=onlclickOK() value="ok">
</html>
问题:当用户单击"确定"按钮时我们需要调用doneok((函数其进一步将retval值返回给调用页面
这就是我受到打击的地方;
//Still there are some better ways to do. In case, this may help a little bit in calling the function to get the retval.
function loadpic() {
//loads pictures in canvas frames and allow user to edit
return doneOK()
}
function doneOK() {
return retval;
};
当用户只在未来单击按钮时,您不能期望返回值现在可用。因此,您需要一个异步解决方案。现在你会使用Promises和async
await
关键字。
您还需要在调用loadPic
时(而不是之前(开始收听OK按钮的点击。
以下是它的样子:
async function AddPic() {
var ret = await loadpic();
console.log("retval=" + ret);
}
导入第一个文件的第二个文件将变为:
var onlclickOK = () => null; // null operation
var retval;
function loadpic() {
//loads pictures in canvas frames and allow user to edit
// ...
// ...
return new Promise(resolve => {
onlclickOK = () => resolve(retval);
});
}
function edit1() { retval=1;}
function edit2() { retval=2;}
function edit3() { retval=3;}
function edit4() { retval=4;}
function edit5() { retval=5;}
function edit6() { retval=6;}