技术解析

JS 闭包如何传参的问题
0
2021-08-20 06:08:50
idczone

getInstallInfo () { var openinstall = api.require('openinstall'); openinstall.getInstall({ timeout:10 },function(ret, err){ alert(JSON.stringify(ret)); }); }

getInstallInfo();

代码如上,要怎么把 ret 的值传出来呢?


return

你这都写的什么东西,搞个 markdown 语法,至少分个行吧?
回复里面好像用不了 markdown,你只能将就着看了
```
function getInstallInfo() {
return new Promise((resolve, reject) => {
const openinstall = api.require('openinstall');
openinstall.getInstall({ timeout:10 }, (ret, err) => {
if (err) {
reject(err)
} else {
resolve(ret)
}
});
})
}
getInstallInfo()
.then((val) => {
alert(JSON.stringify(val))
})
.catch((err) => {
console.error(err)
})
```
虽然代码是这样的,但是这些东西你都不能直接用,因为 Promise 有兼容性问题,箭头函数需要转译,所以,你再看看这方面(webpack + babel)的东西吧。

2 楼的 promise 箭头函数现在已经可以直接在 chrome 直接跑了了
如果你想要兼容又不想搞 babel
省事的就是给 getInstallInfo 传个 callback 方法,然后在你 alert 的地方调用这个方法把 ret 传给 callback,然后把使用 ret 的逻辑全写到 callback 里面(著名回调地狱)

trigger 一个 custom event 也还行

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服