如何在promise数组中引用对象值?

时间:2016-12-21 08:32:48

标签: javascript arrays object promise

下面的对象包含查找键,其中包含数组 承诺,用于针对value运行一系列验证

如何从full_name访问email的价值?

const config = {
  full_name: [
    val => new Promise((resolve, reject) => resolve(val)),
    val => new Promise((resolve, reject) => resolve(val))
  ],
  email: [
    val => new Promise((resolve, reject) => resolve(val)),
    val => new Promise((resolve, reject) => reject(`${config.full_name.val}`)) // get the value which has been passed to full_name
  ]
}

2 个答案:

答案 0 :(得分:2)

didFinishLaunchingWithOptions不存在,因为$("#audio-player")[0].addEventListener('canplaythrough', mobileReady, false); function mobileReady(){ $("#audio-player")[0].play() } 是一个包含返回promise的函数的数组。

此处的用例取决于如何调用这些函数的上下文。这个上下文在这里解释:https://jsfiddle.net/karlbateman/keqnrybq/

另外考虑验证部分与实际配置不同的模块,不能简单地访问回调中的formData。

但是,您可以在函数回调中添加一个上下文参数,它提供了要访问的formData,如下所示:https://jsfiddle.net/odolha/tpn75570/

见这一行(在validatorFn中):

config.full_name.val

这基本上将formData作为上下文参数提供,可以在以后使用:

config.full_name

答案 1 :(得分:0)

您也可以实现类似的功能,如下所示;



function promisifier(val, pass = true){
  return new Promise(function(v,x){
                       return pass ? v(val) : x(val);
                     });
}

var config = { full_name: [promisifier, promisifier],
                   email: [promisifier, promisifier]
             };
config.full_name[0]("Thaddeus Jones")
      .then(r => config.email[1](r,false))
      .then(r => console.log("resolved by:", r))
      .catch(e => console.log("received error:", e));