正在获取绑定到特定函数的返回值



遇到一些特殊问题,将不胜感激

// 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和asyncawait关键字。

您还需要在调用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;}

最新更新