javascript:承诺问题
这是我的密码javascript:承诺问题,javascript,jquery,Javascript,Jquery,这是我的密码 function m1() { return new Promise(function(resolve, reject) { var files = $('#aws-upload-files')[0].files; if (files.length > 0) { for (var i = 0; i < files.length; i++) { loadFile(files[i], $('#filecategory' + i
function m1() {
return new Promise(function(resolve, reject) {
var files = $('#aws-upload-files')[0].files;
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
}
})
}
function submitFileUpload() {
$('#aws-upload-submit').click(function() {
m1().then(function(result) {
console.log('~~~ success here ');
window.location = 'https://example.com/';
})
.catch(function(error) {
console.log('Error');
})
})
}
$(function() {
submitFileUpload();
})
函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;i
单击按钮“#aws upload submit
”时,调用函数m1()
函数m1()
返回一个承诺
在.then()
中,我检查承诺是否返回成功,如果成功,我将浏览器重定向到
在我的例子中,当单击按钮时,调用m1()
,函数成功运行,但没有创建任何承诺或。然后()
根本不起作用
尽管m1()
正在按预期工作,但我根本没有看到任何console.log声明“~~~~此处成功
”
有人能告诉我我的承诺有什么问题吗?在
新承诺的回调中
你没有决定不拒绝承诺,所以你的承诺一直在等待
你需要这样做
function m1() {
return new Promise(function(resolve, reject) {
var files = $('#aws-upload-files')[0].files;
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
resolve("loaded")
} else {
reject("no files")
}
})
}
函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;i
函数完成后,需要调用解析方法
:
function m1()
{
return new Promise(function(resolve, reject)
{
var files = $('#aws-upload-files')[0].files;
if(files.length > 0){
for(var i=0; i<files.length; i++)
{
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
}
})
resolve();
}
函数m1()
{
返回新承诺(功能(解决、拒绝)
{
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;i,您需要解析承诺或拒绝它,因此您必须这样编写代码
function m1() {
return new Promise(function(resolve, reject) {
var files = $('#aws-upload-files')[0].files;
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
resolve("loaded")
} else {
reject("no files")
}
})
}
阅读:
函数m1(){
返回新承诺(功能(解决、拒绝){
var files=$('#aws上载文件')[0]。文件;
如果(files.length>0){
对于(var i=0;iconsole.log(“任务完成!”),
()=>console.log(“任务出错!”),
);
因为loadFile
似乎是同步的,所以在这里使用承诺没有意义-直接从m1
返回成功或失败
function m1() {
var files = $('#aws-upload-files')[0].files;
if (files.length < 0) return false;
for (var i = 0; i < files.length; i++) {
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
return true;
}
const succeeded = m1();
console.log(succeeded ? "Task Complete!" : "Task Errored!")
函数m1(){
var files=$('#aws上载文件')[0]。文件;
如果(files.length<0)返回false;
对于(var i=0;i
您永远不会解决承诺;在代码中,您永远不会调用resolve
。什么是loadFile
?loadFile是另一种方法…让我来看看解决方法..tx
function m1() {
var files = $('#aws-upload-files')[0].files;
if (files.length < 0) return false;
for (var i = 0; i < files.length; i++) {
loadFile(files[i], $('#filecategory' + i + ' option:selected').text());
}
return true;
}
const succeeded = m1();
console.log(succeeded ? "Task Complete!" : "Task Errored!")