gpt4 book ai didi

javascript - 使用 Promise - 结果不返回

转载 作者:行者123 更新时间:2023-12-01 03:38:31 25 4
gpt4 key购买 nike

我有以下内容:

    resolutionTestBuilder.buildTests().then(function(tests) {
var s = tests; // checking result
});

buildTests 看起来像这样:

resolutionTestBuilder.buildTests = function () {
Promise.all([createAllResolutions(), deviceScanner.scanDevices()])
.spread(function (resolutions, videoDevices) {
var tests = [];
resolutions.forEach(function (targetResolution) {
videoDevices.forEach(function (videoDevice) {
tests.push({ device: videoDevice, resolution: targetResolution });
});
});
return tests;
});
}

createAllResolutions 如下所示:

 var createAllResolutions = function () {
for (let y = maxHeight; y >= minHeight; y--) {
resolutions.push(
{x:x,y:y}
);
}
return resolutions;
}

最后,scanDevices 如下所示:

deviceScanner.scanDevices = function() {
navigator.mediaDevices.enumerateDevices().then(function(availableDevices) {
var videoDevices = [];
for (var i = 0; i < availableDevices.length; ++i) {
if (availableDevices[i].kind === 'videoinput') {
videoDevices.push({ label: availableDevices[i].label || 'camera ' + (videoDevices.length + 1), id: availableDevices[i].deviceId });
}
}
return videoDevices;
});
}

我看到的行为是 .spread 参数部分完整 - 我获得了 分辨率,但没有获得 videoDevices。这是我第一次尝试 promise (和 Bluebird ),所以我可能在这里遗漏了一些非常基本的东西 - 我做错了什么?

最佳答案

return来自then回调还不够,你需要return then()的 promise 调用从函数创建!

resolutionTestBuilder.buildTests = function () {
return Promise.all([createAllResolutions(), deviceScanner.scanDevices()])
// ^^^^^^
.spread(function (resolutions, videoDevices) {

});
};
deviceScanner.scanDevices = function() {
return navigator.mediaDevices.enumerateDevices().then(function(availableDevices) {
// ^^^^^^

});
};

关于javascript - 使用 Promise - 结果不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073510/

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