下面的对象包含查找键,其中包含 promise 的数组,用于针对值<运行一系列验证
.
如何从 email
访问 full_name
的值?
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
]
}
最佳答案
config.full_name.val
不存在,因为 config.full_name
是一个包含返回 promise 的函数的数组。
此处的用例取决于调用这些函数的上下文。此上下文在此处解释:https://jsfiddle.net/karlbateman/keqnrybq/ .
还考虑到验证部分位于与实际配置不同的模块中,因此不能简单地访问回调中的 formData。
但是,您可以将上下文参数添加到提供要访问的 formData 的函数回调中,如下所示:https://jsfiddle.net/odolha/tpn75570/
查看这一行(在 validatorFn 中):
arr.push(config[field].map(cb => cb(formData[field], formData)))
这基本上提供了 formData 作为上下文参数,可以在以后使用:
(val, ctx) => new Promise((resolve, reject) => setTimeout(() => {
reject(`${ctx.name} already is exists.`) // simulate a HTTP request
}, 2000))
关于javascript - 如何在 promise 数组中引用对象值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41258349/