异步和同步获取数据

我想问一下有没有什么写法能够将异步变为同步,类似jquery中的ajax;类似这种

function getData(){
    var dataList;
    $.ajax({
        async:false,
        ....
        success:function(data){
            dataList = data
        }
    })
    return dataList
}
var data = getData()

然后我自己因为是ws通信,也是异步,所以我也想问下有什么办法能够像ajax这样直接return 等于
下面是我的代码

XDC.prototype.GetTGrpList = function (){
    return new Promise(function(resolve, reject){
        //做一些异步操作
        that.sendCallback(tGrpReq, 'tGrpReq', function(data){
            resolve(data)
        });
}
//获取数据
xdc.GetTGrpList().then(data => {
    //获取数据
})

我尝试用了promise、async、generator都只能这种链式获取数据,而不是直接等于获取数据,不知道有没有大神能够帮忙解答一下。万分感谢!!!

阅读 5.3k
1 个回答
我尝试用了promise、async、generator都只能这种链式获取数据

async/await 不用链式获取吧

XDC.prototype.GetTGrpList = async function (){
        return that.sendCallback(tGrpReq, 'tGrpReq', function(data){
            return data;
        });
}
//获取数据
let response = await xdc.GetTGrpList();
// 用response做你想要的操作。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进