小程序异步转同步

发布于 6 年前作者 ping454855 次浏览最后编辑 6 年前来自 ask

大家有没有一些好的办法吧异步转为同步呢?有些参数是需要调用一个方法后返回,另一个函数使用,异步处理老是获取不到这个返回值    

10 回复
zhangfang
zhangfang1 楼6 年前

如果非要把一个异步方法改为同步的话,可以使用类似 while(true) 的方法来等待。但是不建议这么做,推荐使用 Promise。

rshi
rshi2 楼6 年前

亲求教  这样怎么写 f()方法  怎么返回

pingkang
pingkang3 楼6 年前

非常感谢你   成功了   在请教个问题

如果这样写  这里该怎么返回   并且这个id是有值的 可以在下一步使用

jing77
jing774 楼6 年前

请问下,app.js中通过wx.login返回的code换取的sessionKey,在index.js中获取不到的异步问题怎么解决?

nhao
nhao5 楼6 年前

请问下,最终是怎么解决这个问题的?app.js里面请求的数据openID,index.js一直获取不到

yongjin
yongjin6 楼6 年前

好的 谢谢大神了,小白一个 , js不是很懂

fanchao
fanchao7 楼6 年前

我没有在app.js里调用  哪个页面需要登录在哪个页面调用的

yongren
yongren8 楼6 年前

当需要使用异步调用返回的数据时,相关的代码需要写到回调函数中,像这样:

function f(code, callback) {

    WxLogin({code: code}, res=>{

        GetList({id: res, res1 => {

            callback(res1);

        }

    }

}

如果不喜欢上面这种嵌套的方式,可以采用promise将代码改造成login(…).then(getList).then(callback)这样的形式,但仍然还是异步调用,你应该还是没有正确理解异步回调的处理方法,此时不建议接触promise,它会让你更加一头雾水。

taoye
taoye9 楼6 年前

f函数中res由回调产生,就不能直接return,可以采用下面的方法:

function f(callback) {

    getList({}, (res)=>{

        callback(res)

    }

}


// 使用f:

f((res)=>{

    console.log(res);

});

songyong
songyong10 楼4 年前

同一个页面函数嵌套就行了,不同页面请参考app.js中userInfoReadyCallback的回调写法