gpt4 book ai didi

javascript - Nodejs 从函数内部调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:57 24 4
gpt4 key购买 nike

我有3种方法

exports.getImageById = function (resultFn, id) {
...
}

exports.getCollectionById = function (resultFn, id) {
}

在第三个方法中我想调用这两个方法

exports.getCollectionImages = function (resultFn, collectionId) {

var arr = new Array();

this.getCollectionById( // fine, 1st call
function (result) {
var images = result.image;
for (i = 0; i < images.length; i++) {
this.getImageById(function (result1) { // error, 2nd call
arr[i] = result1;
}, images[i]
);

}
}
, collectionId
);

resultFn(arr);
}

我可以调用第一个函数this.getCollectionById,但它无法调用this.getImageById,它说未定义函数,是什么原因?

最佳答案

当您调用 this.getCollectionById 并向其传递回调时,回调无法访问相同的 this

最简单的解决方案是将 this 保存为局部变量。

exports.getCollectionImages = function (resultFn, collectionId) {    
var arr = new Array();
var me = this; // Save this
this.getCollectionById( // fine, 1st call
function (result) {
var images = result.image;
for (var i = 0; i < images.length; i++) {
// Use me instead of this
me.getImageById(function (result1) { // error, 2nd call
arr[i] = result1;
}, images[i]);
}
}, collectionId);
resultFn(arr);
}

关于javascript - Nodejs 从函数内部调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com