我正在练习回调函数,我想知道如何在不使用承诺的情况下访问函数的结果,独立于回调函数...
const mdn = (name) => {
if(typeof name === 'string') {
resolve()
}
else {
reject()
}
}
const resolve = function() {
console.log(`Hello ${name}`)
}
const reject = function() {
console.log(`invalid Name`)
}
mdn('ok')
如何在回调函数本身内部访问调用函数的结果?
回调函数是作为参数传递给函数然后调用它的函数。这些你都没有。
函数可以访问以下变量:
您的变量(
name
)仅存在于mdn
函数的范围内。
resolve
和 reject
没有在 mdn
中定义。他们无法访问name
.
您可以更改定义这些函数的位置,因此
name
变量在范围内。
const mdn = (name) => {
const resolve = function() {
console.log(`Hello ${name}`)
}
const reject = function() {
console.log(`invalid Name`)
}
if (typeof name === 'string') {
resolve()
} else {
reject()
}
}
mdn('ok')
您可以将变量的值作为参数传递给
resolve
和reject
。
const mdn = (name) => {
if (typeof name === 'string') {
resolve(name)
} else {
reject(name)
}
}
const resolve = function(name) {
console.log(`Hello ${name}`)
}
const reject = function(name) {
console.log(`invalid Name`)
}
mdn('ok')
早些时候我指出你的函数不是回调。使它们成为回调函数不会对变量范围产生影响。
其实
Promise
,callback
跟这个没关系
您需要将参数传递给
resolve
:
const mdn = (name) => {
if(typeof name === 'string') {
resolve(name)
}
else {
reject()
}
}
const resolve = function(name) {
console.log(`Hello ${name}`)
}
const reject = function() {
console.log(`invalid Name`)
}
mdn('ok')