【问题标题】:Issue on Creating a Promise in Javascript在 Javascript 中创建 Promise 的问题
【发布时间】:2015-08-29 17:19:43
【问题描述】:

您能否看看this Demo 并告诉我为什么我无法正确创建和使用 Promise?

var projectInfo = [];
var projectPromise;
var thePromissedProjects;
var projects = [{
    "ProjectID": "15260",
    "Longitude": "-118.641508",
    "Latitude": "51.949915",
}, {
    "ProjectID": "17043",
    "Longitude": "-125.444557",
    "Latitude": "51.097552",
}, {
    "ProjectID": "12910",
    "Longitude": "-130.759074",
    "Latitude": "57.128581",
}, {
    "ProjectID": "15204",
    "Longitude": "-117.947302",
    "Latitude": "52.363281",
}, {
    "ProjectID": "15237",
    "Longitude": "-118.338717",
    "Latitude": "52.013140",
}, {
    "ProjectID": "17040",
    "Longitude": "-125.142283",
    "Latitude": "51.125719",
}, {
    "ProjectID": "12961",
    "Longitude": "-130.430823",
    "Latitude": "57.022356",
}, {
    "ProjectID": "14677",
    "Longitude": "-119.387702",
    "Latitude": "51.896785",
}, {
    "ProjectID": "15212",
    "Longitude": "-118.104450",
    "Latitude": "52.242352",
}];
projectPromise = new Promise(function () {
    for (var i = 0; i < projects.length; i++) {
        thePromissedProjects = projects[i];
         }
    return thePromissedProjects;

});
projectPromise.then(printPromisses);

function printPromisses(p){
    console.log(p.ProjectID);
    
}
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【问题讨论】:

  • 嗯,你的代码确实创建了一个承诺,但它没有在任何地方使用,所以,你怎么知道它不起作用?
  • 这段代码没有意义。你想做什么?
  • 也许他创建了一个不需要承诺的例子,但他正试图在真正需要的地方使用它,所以如果你不了解什么是承诺/延迟是必要的'不理解延迟/承诺真的很容易创建不需要它的示例代码
  • @Gusman 走吧,解决一个你对使用技术一无所知的问题,你甚至不知道它们是否对那些甚至没有提到的库(jQuery?Angular?!)谁无法解释他们需要什么。谈论盲人带领盲人。
  • 你的承诺语义很好。您只需要注入resolvereject 参数并在某处调用它们。但是一个promise只能被解决一次。您要么需要为每个项目创建一个承诺,要么将它们链接起来。显然,正如其他人所说,这里没有异步代码,因此不需要承诺

标签: javascript promise


【解决方案1】:

在调用任何回调之前,您需要解决或拒绝一个承诺。

projectPromise = new Promise(function (resolve, reject) {
  resolve(projects[0]);
});

打印15260。见fiddle

您只能解决或拒绝一次承诺。因此,如果您打算遍历项目并让回调在每次迭代时执行一次,那将无法正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多