这里第一次当我调用updateRegistery时,只有auctionItem被更新为“Selling”,并且在超时1分钟后再次调用updateRegistery,这次不会更新“auctionItem”或“auction”。
没有.catch()函数被调用,这意味着所有的promise都被成功解析。
请告诉我哪里出错了?
作曲家版本:-v0.16.4
/**Invoked start the auction
* @param {namespace.StartEnglishAuction} startEnglishAuction
* @transaction
*/
function startEnglishAuction( startAuction ) {
var NS = "namespace";
var auction = startAuction.auction;
var auctionCreateTime = startAuction.timestamp;
if( auction.status == "FINISHED" ){
console.log("Auction is ALready Over");
return "Auction is ALready Over...!";
}
else if( auction.status == "IN_PROGRESS" ){
console.log("Auction is ALready Running");
return "Auction is Already Running...!";
}
//this updates my auctionItem status to "SELLING" but does not updates auction status in registry
**auction.status = "IN_PROGRESS";
auction.auctionItems[0].status = "SELLING";
updateRegistery(auction,auction.auctionItems[0] );**
var intervalId = setInterval( checkBidsInterval, 1000 );//checks if auction timeout has occured
function checkBidsInterval( ){//called every second after auction is created
console.log("tick tick");
var now = new Date().getTime();
if( !auction.auctionItems[0].lastBidTimestamp ){ //if no bid placed
//nobody bought item
var timeoutTime = new Date( auctionCreateTime );
timeoutTime.setMinutes( timeoutTime.getMinutes() + 1 );
console.log(" no bid waala case");
if( now >= timeoutTime.getTime() ){
//this is called but updates nothing in registry
**auction.auctionItems[0].status = "UNSOLD";
auction.status = "FINISHED";
updateRegistery(auction,auction.auctionItems[0] );**
clearInterval( intervalId );
}
}
function sellItem( auction, auctionItem ){
var factory = getFactory();
auction.auctionItems[0].status = "SOLD";
// factory.newResource( NS, "EnglishAuctionItemSold" );
console.log("item sold");
return updateRegistery( auction, auctionItem );
}
}//end checkBidInterval
function updateRegistery( auction, auctionItem ){
return getAssetRegistry( NS + '.EnglishAuctionItem' )
.then(function ( englishAuctionItemRegistery ) {
console.log("rAuctionItem Updated Successfully.!");
return englishAuctionItemRegistery.update( auctionItem );
})
.catch(function( error ){
console.log("1error ::", error);
return "fdf";
})
.then(function( earrr ) {
console.log("earrr", earrr);
return getAssetRegistry( NS + '.EnglishAuction' );
})
.catch(function( error ){
console.log("2error ::", error);
return "fdf";
})
.then(function( englishAuctionRegistery ) {
// add the temp reading to the shipment
console.log("rEnglishAuction Successfully.!");
return englishAuctionRegistery.update(auction);
})
.catch(function( error ){
console.log("3error ::", error);
return "fdf";
})
}
}//end startEnglishAuction
答案 0 :(得分:0)
没有模特很难看到。您还有非确定性代码(new Date()。getTime()),这可能意味着您的同事会对结果达成一致(不确定您在设置中有多少同伴)。
您可以尝试使用此链来查看两个注册表是否都在更新。
return getAssetRegistry( NS + '.EnglishAuctionItem' )
.then(function ( englishAuctionItemRegistery ) {
console.log("EnglishAuctionItem Updated Successfully.!");
return englishAuctionItemRegistery.update( auctionItem ) ;
})
.then function() {
return getAssetRegistry( NS + '.EnglishAuction' )
.then(function ( englishAuctionRegistery ) {
console.log("EnglishAuction Updated Successfully.!");
return englishAuctionRegistery.update(auction);
})
.catch(function( error ) {
console.log("Error", error);
});
这里的类似例子