gpt4 book ai didi

node.js - Promise 在回调中给出未定义的结果

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

文件上传.js

var Uploader = require('s3-image-uploader');
var express = require('express');
var config = require('./../config.js');
var Promise = require('promise');

var uploader = new Uploader({
aws: {
key: config.awsKey,
secret: config.awsSecret
},
websockets: false
});


exports.fileUpload = function(fileName) {

new Promise(function(resolve, reject) {

uploader.upload({
fileId: 'someUniqueIdentifier',
bucket: 'quflip',
source: './public/images/' + fileName,
name: fileName
},
function(data) { // success
console.log('upload success:', resolve);
resolve(data);
},
function(errMsg, errObject) { //error
reject(false);
});
});
};

登录测试.js

var awsUpload = require('./../config/fileUpload.js');

var userData = function(req, res) {
console.log("true/false" + awsUpload.fileUpload(profile_image));

这里发生的事情是,我在 console.log 中得到未定义的值。所以这意味着回调没有传递数据。如何有效地传递数据以实现进一步的目的

最佳答案

您需要使用 .then 链接到 Promise 并在那里进行日志记录。首先,确保您返回 promise

return new Promise(function(resolve, reject) {

然后,你可以这样做:

var userData = function (req, res) {
awsUpload.fileUpload(profile_image).then(data => {
console.log("true/false" + data);
});
}

如果您在支持async/await的环境中工作,则可以更简单地执行此操作:

var userData = async function (req, res) {
console.log("true/false" + await awsUpload.fileUpload(profile_image));
};

请记住,这将返回一个 Promise。

不过,我不知道 profile_image 在哪里设置。

关于node.js - Promise 在回调中给出未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100313/

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