任何人都可以给我一个nodeJs回调的简单例子,我已经在很多网站上搜索过相同但不能正确理解它,请给我一个简单的例子.
getDbFiles(store, function(files){
getCdnFiles(store, function(files){
})
})
Run Code Online (Sandbox Code Playgroud)
我想做那样的事......
我目前正在使用angular的$ q服务来进行API调用,如下所示:
var deferred = $q.defer();
$http.get(config.apiHost + details.url)
.success(function (data) {
deferred.resolve(data);
}).error(function (msg) {
deferred.reject(msg);
});
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)
但是我们也可以在不使用$ q的情况下使用这种方法:
return $http.get(config.apiHost + details.url)
.success(function (data) {
return data;
}).error(function (msg) {
return msg;
});
Run Code Online (Sandbox Code Playgroud)
并且当$ http本身返回承诺时,我也可以使用更简化的方法:
$http.get(config.apiHost + 'posts')
.success(function (data) {
console.log(data)
}).error(function (msg) {
console.log(msg);
});
Run Code Online (Sandbox Code Playgroud)
那么所有这些特别是在$ q和$ http之间有什么区别,因为两者都返回promise并且都是异步的?angular是否为$ q提供了一些额外的功能?我找不到任何好的答案.
我想将图像上传到亚马逊网络服务器,为此我使用带有nodejs的aws-sdk.
我能够将图像上传到s3存储桶,但是当我点击URL访问它们时,我得到访问被拒绝错误.
这是我的配置
var AWS = require('aws-sdk');
//aws credentials
AWS.config = new AWS.Config();
AWS.config.accessKeyId = "<access_key>";
AWS.config.secretAccessKey = "<secret_key>";
AWS.config.region = "ap-southeast-1";
AWS.config.apiVersions = {
"s3": "2006-03-01"
}
var s3 = new AWS.S3();
var bodystream = fs.createReadStream(req.files.pic.path);
var params = {
'Bucket': '<bucket_name>',
'Key': 'uploads/images/' + req.files.pic.name,
'Body': bodystream,
'ContentEncoding': 'base64',
'ContentType ': 'image/jpeg'
};
//also tried with s3.putObject
s3.upload(params, function(err, data){
console.log('after s3 upload====', err, data);
})
Run Code Online (Sandbox Code Playgroud)
图像上传成功但其内容类型为application/octet.另外我认为存在一些权限问题,因为当我添加新权限时,我可以下载图像但无法看到它.
你能告诉我这个配置有什么问题吗?我想知道s3.upload和s3.putObject方法之间的区别.
您将获得一个包含负值和正值的排序数组.采用负数绝对值的阵列.你的复杂性应该是O(n)
样本输入
[-8, -5, -3, -1, 3, 6, 9]
Run Code Online (Sandbox Code Playgroud)
预期产出
[ -1, -3, 3, -5, 6, -8, 9 ]
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经这样做了,但输出不正确.
function sortMe(input) {
var newArr = [];
for (var i = 0; i < input.length; i++) {
var value = Math.abs(input[i]);
newArr.push(value);
}
var c = newArr.sort()
}
Run Code Online (Sandbox Code Playgroud)
它正在提供输出
[ 1, 3, 3, 5, 6, 8, 9 ]
Run Code Online (Sandbox Code Playgroud) javascript ×3
node.js ×2
amazon-s3 ×1
angularjs ×1
arrays ×1
asynchronous ×1
callback ×1
sorting ×1