如何使用Promise中的值异步更新AngularJS状态 [英] How to asynchronously update AngularJS state using value inside of Promise

查看:132
本文介绍了如何使用Promise中的值异步更新AngularJS状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在JavaScript中从then()访问返回值?

How can i access a returned value from then() in JavaScript?

我有以下功能:

function getResult(){
  var promise = _myService.getAge();
  var getResultPromise = promise.then(function(age){
    return age;
  })
  return getResultPromise; //How do i get the age (value) here?  *see image*
}

或者我将如何访问$$状态中的值下面的对象?

Or how would i access the value in the $$state object below?

推荐答案

这个怎么样:

//The simple solution, this is how to use a Promise:

let _myService = {
  getAge: function() {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        resolve(3)
      }, 500);
    })
  }
};

function getResult() {
  _myService.getAge().then(function(age) {
    console.log(age);
  });
}

getResult();

//OR, maybe closer to OP's intended implementation, put the value in an outer state:

let outerState = {
  age: 0
};

setTimeout(function() {
  console.log(outerState)
}, 450);

let _myService2 = {
  getAge: function() {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        resolve(8)
      }, 750);
    })
  }
};

function addAgeToOuterState() {
  pState = new Promise(function(resolve, reject) {
    _myService2.getAge().then(function(newAge) {
      outerState.age = newAge;
      resolve(outerState);
    });
  });

  pState.then(function() {
    console.log(outerState);
  });

  return pState;
}

addAgeToOuterState()

//for fun
.then(function(outer) {
  console.log(outer); //state is still here
});

这篇关于如何使用Promise中的值异步更新AngularJS状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆