异步 - 如何在JavaScript中把有多个回调层级函数写成同步方式?
巴扎黑
巴扎黑 2017-04-10 16:54:22
[JavaScript讨论组]

现在代码如下

function getLocaltion(callback){
    window.navigator.geolocation.getCurrentPosition(pos =>{
        let url = '百度地图api查询详细信息接口'+pos
        fetch(url, {...options})
            .then(data =>callback(null,data))
            .catch(err =>callback(err))
       }
}

如何把它改成用promise或者async/await形式
直接 let address = getLocaltion()

巴扎黑
巴扎黑

全部回复(2)
黄舟

大概写一下是这样的。

var getCP = function () {
    return new Promise(function(resolve) {
     window.navigator.geolocation.getCurrentPosition(resolve);
    })
};

然后这样用:

getCP().then(function(position) {
    return fetch(…);
}).then(…);

手机打代码不方便,写了个大概。

重点就是把所有异步过程都封装成一个返回值为Promise的函数,像fetch那样。

高洛峰
const getLocaltion = callback => {
    let getCurrentPosition = new Promise(resolve => {
        window.navigator.geolocation.getCurrentPosition(resolve);
    });

    return getCurrentPosition.then(pos => {
        let url = '百度地图api查询详细信息接口' + pos;
        return fetch(url, {...options});
    }).then(data => callback(null, data)).catch(err => callback(err));
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号