javascript – 承诺只发射一次?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 承诺只发射一次?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含848字,纯文字阅读大概需要2分钟。
内容图文
有什么理由说下面的承诺只会发射一次吗?
console.log('start')
var Promise = require('bluebird')
var onoff = require('onoff')
var Gpio = onoff.Gpio
var button = new Gpio(4, 'in', 'both')
var buttonWatchAsync = function (button, desiredValue) {
return new Promise (function (resolve, reject) {
return button.watch(function(err, value) {
if (err) return reject(err)
if (typeof desiredValue === 'undefined') return resolve(value)
if (desiredValue === value) return resolve()
})
})
}
buttonWatchAsync(button)
.then(function (value) {
console.log('fired promise')
console.log(value)
})
.catch(function (err) {
throw err
})
解决方法:
因为承诺只会发射一次.承诺被创建/初始化,然后结算,一旦结算,永远不会解决或重新解决.呼叫解决或拒绝第二(第三,第四,……)时间是无操作. (有些人认为它应该是一个错误,但事实并非如此.)承诺不是事件,它们不能再发生.因此,对于代码正在做什么,承诺不是正确的工具.
内容总结
以上是互联网集市为您收集整理的javascript – 承诺只发射一次?全部内容,希望文章能够帮你解决javascript – 承诺只发射一次?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】