Lazulitecn 2022-01-13 08:53 采纳率: 84.8%
浏览 70
已结题

请问JS为什么设置变量值不成功,钉钉宜搭


export function getgps() {
  var j = 0;
  var w = 0;
  loadDDApi.then(() => {
    dd.ready(() => {
      // 获取当前地理位置信息(单次定位)
      dd.device.geolocation.get({
        targetAccuracy: 200,
        coordinate: 1,
        withReGeocode: true,
        useCache: true, 
        onSuccess: function (result) {
          var j = result.longitude;//这里经纬度赋值失败
          var w = result.latitude//这里经纬度赋值失败
          alert(result.longitude);//这里能正常弹窗提示经纬度的值
        },
        onFail: function (err) { }
      });
    })
  })
  this.$("textField_kybrsytl").setValue(j);//设置文本框,j的值还是0
  this.$('numberField_kybrsytm').setValue(w);//设置数值框,w的值还是0
}

请问为什么设置选项框内容 j和w 为什么赋值变量失败了呢?

  • 写回答

7条回答 默认 最新

  • Rattenking Python领域优质创作者 2022-01-13 09:22
    关注
    1. js 运行机制先同步任务 后异步任务
    2. then 属于异步任务的微观任务
    3. 也就说按照你的代码,同步执行var j = 0;this.$("textField_kybrsytl").setValue(j);异步值没有作用复制到文本;
    4. 所以将设置值放到异步任务的成功函数里,进行赋值;
    5. 还要注意this的指向,留住this。
    
     
    export function getgps() {
      var j = 0;
      var w = 0;
      var _this = this;
      loadDDApi.then(() => {
        dd.ready(() => {
          // 获取当前地理位置信息(单次定位)
          dd.device.geolocation.get({
            targetAccuracy: 200,
            coordinate: 1,
            withReGeocode: true,
            useCache: true, 
            onSuccess: function (result) {
              var j = result.longitude;
              var w = result.latitude;
              _this.$("textField_kybrsytl").setValue(j);
              _this.$('numberField_kybrsytm').setValue(w);
            },
            onFail: function (err) { }
          });
        })
      })
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 1月21日
  • 已采纳回答 1月13日
  • 创建了问题 1月13日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分